/* picmicrolab.com *************************************************************************************************************** Arduino 4 Digit LED 7-Segment Countdown Timer 9999 - 0 seconds */ #include #include // Module connection pins (Digital Pins) #define CLK 2 #define DIO 3 int NewKeyPadVal = 0; //----Input Code Digits-- int InputDigit1 = 0; int InputDigit2 = 0; int InputDigit3 = 0; int InputDigit4 = 0; //---------------------- TM1637Display display(CLK, DIO); uint8_t data[] = { 0xff, 0xff, 0xff, 0xff }; void setup() { display.setBrightness(0x01);//MAX - 0x0f // Selectively set different digits data[0] = display.encodeDigit(0); data[1] = display.encodeDigit(0); data[2] = display.encodeDigit(0); data[3] = display.encodeDigit(0); display.setSegments(data); // initialize I/O pins. pinMode(A0, OUTPUT); //Relay or LED blinking Output at 0000 //--------------------------4x3 Keypad------------------ //------3 columns----- pinMode(A3, OUTPUT); pinMode(A2, OUTPUT); pinMode(A1, OUTPUT); digitalWrite(A3, HIGH); digitalWrite(A2, HIGH); digitalWrite(A1, HIGH); //-------4 rows----------- pinMode(6, INPUT_PULLUP); pinMode(7, INPUT_PULLUP); pinMode(8, INPUT_PULLUP); pinMode(9, INPUT_PULLUP); //------------------------ } void loop() { display.setSegments(data); if(InputDigit1 == 0 && InputDigit2 == 0 && InputDigit3 == 0 && InputDigit4 == 0) { delay(400); while(Scan_4x3_keypad() == 15) { delay(1); IfZero(); } NewKeyPadVal = Scan_4x3_keypad(); InputDigit1 = NewKeyPadVal; data[0] = display.encodeDigit(InputDigit1); display.setSegments(data); //---------------------------------------------------- delay(400); while(Scan_4x3_keypad() == 15) delay(1); NewKeyPadVal = Scan_4x3_keypad(); InputDigit2 = NewKeyPadVal; data[1] = display.encodeDigit(InputDigit2); display.setSegments(data); //---------------------------------------------------- delay(400); while(Scan_4x3_keypad() == 15) delay(1); NewKeyPadVal = Scan_4x3_keypad(); InputDigit3 = NewKeyPadVal; data[2] = display.encodeDigit(InputDigit3); display.setSegments(data); //---------------------------------------------------- delay(400); while(Scan_4x3_keypad() == 15) delay(1); NewKeyPadVal = Scan_4x3_keypad(); InputDigit4 = NewKeyPadVal; data[3] = display.encodeDigit(InputDigit4); display.setSegments(data); //----------------------------------------------------- } TimerCount(); } int TimerCount() { InputDigit4--; delay(1000); if(InputDigit4 == -1) { InputDigit4 = 9; InputDigit3--; } if(InputDigit3 == -1) { InputDigit3 = 9; InputDigit2--; } if(InputDigit2 == -1) { InputDigit2 = 9; InputDigit1--; } data[0] = display.encodeDigit(InputDigit1); data[1] = display.encodeDigit(InputDigit2); data[2] = display.encodeDigit(InputDigit3); data[3] = display.encodeDigit(InputDigit4); } void IfZero() { if(InputDigit1 == 0 && InputDigit2 == 0 && InputDigit3 == 0 ) { digitalWrite(A0, HIGH); delay(100); digitalWrite(A0, LOW); delay(100); } } int Scan_4x3_keypad() { int keypadVal = 15; //----------Find 3,6,9,* ---- digitalWrite(A3, LOW); digitalWrite(A2, HIGH); digitalWrite(A1, HIGH); if(digitalRead(9) == LOW) keypadVal = 3; if(digitalRead(8) == LOW) keypadVal = 6; if(digitalRead(7) == LOW) keypadVal = 9; if(digitalRead(6) == LOW) keypadVal = 10;// 10 = # //--------------------------- //----------Find 2,5,8,0 ---- digitalWrite(A3, HIGH); digitalWrite(A2, LOW); digitalWrite(A1, HIGH); if(digitalRead(9) == LOW) keypadVal = 2; if(digitalRead(8) == LOW) keypadVal = 5; if(digitalRead(7) == LOW) keypadVal = 8; if(digitalRead(6) == LOW) keypadVal = 0; //--------------------------- //----------Find 1,4,7,* ---- digitalWrite(A3, HIGH); digitalWrite(A2, HIGH); digitalWrite(A1, LOW); if(digitalRead(9) == LOW) keypadVal = 1; if(digitalRead(8) == LOW) keypadVal = 4; if(digitalRead(7) == LOW) keypadVal = 7; if(digitalRead(6) == LOW) keypadVal = 11;// * = 11 return keypadVal; //--------------------------- }