#define A 32
#define B 13
#define C 5
#define D 22
#define E 19
#define F 33
#define G 27
#define DG1 23
#define DG2 25
#define DG3 18
#define DG4 14
#define CLN 26
unsigned long currentTime = 0;
unsigned long lasttTime = 0;
bool ToogleLED = true;
int stateDigit = 1;
unsigned int number = 0;
unsigned int tmpnumber1, tmpnumber2, tmpnumber3, tmpnumber4;
int count = 0;
void setup() {
Serial.begin(115200);
number = 0;
tmpnumber1 = 0;
tmpnumber2 = 0;
tmpnumber3 = 0;
tmpnumber4 = 0;
pinMode(A,OUTPUT); // A
pinMode(B,OUTPUT); // B
pinMode(C,OUTPUT); // C
pinMode(D,OUTPUT); // D
pinMode(E,OUTPUT); // E
pinMode(F,OUTPUT); // F
pinMode(G,OUTPUT); // G
pinMode(DG1,OUTPUT); // Digit1
pinMode(DG2,OUTPUT); // Digit2
pinMode(DG3,OUTPUT); // Digit3
pinMode(DG4,OUTPUT); // Digit4
pinMode(CLN, OUTPUT); // Colon
}
void loop() {
currentTime = millis();
// 100Hz
if(currentTime - lasttTime >= 20){
lasttTime = currentTime;
count++;
if(count >= 50){
if(number >= 60){
number = 0;
}
number++;
count = 0;
Serial.printf("Clock RUN -> %d%d:%d%d\n",tmpnumber1,tmpnumber2,tmpnumber3,tmpnumber4);
}
tmpnumber1 = number / 1000;
tmpnumber2 = (number - ((tmpnumber1) * 1000)) / 100;
tmpnumber3 = (number - (tmpnumber1 * 1000) - (tmpnumber2 * 100)) / 10;
tmpnumber4 = (number - (tmpnumber1 * 1000) - (tmpnumber2 * 100) - (tmpnumber3 * 10));
num7Seg(10);
digitalWrite( DG1, HIGH );
digitalWrite( DG2, HIGH );
digitalWrite( DG3, HIGH );
digitalWrite( DG4, HIGH );
digitalWrite(CLN , HIGH);
if(stateDigit==1){
num7Seg(tmpnumber1);
digitalWrite( DG1, LOW );
digitalWrite( DG2, HIGH );
digitalWrite( DG3, HIGH );
digitalWrite( DG4, HIGH );
digitalWrite(CLN , LOW);
stateDigit = 2;
}else if(stateDigit==2){
num7Seg(tmpnumber2);
digitalWrite( DG1, HIGH );
digitalWrite( DG2, LOW );
digitalWrite( DG3, HIGH );
digitalWrite( DG4, HIGH );
digitalWrite(CLN , LOW);
stateDigit = 3;
}else if(stateDigit==3){
num7Seg(tmpnumber3);
digitalWrite( DG1, HIGH );
digitalWrite( DG2, HIGH );
digitalWrite( DG3, LOW );
digitalWrite( DG4, HIGH );
digitalWrite(CLN , LOW);
stateDigit = 4;
}else if(stateDigit==4){
num7Seg(tmpnumber4);
digitalWrite( DG1, HIGH );
digitalWrite( DG2, HIGH );
digitalWrite( DG3, HIGH );
digitalWrite( DG4, LOW );
digitalWrite(CLN , LOW);
stateDigit = 1;
}else{
stateDigit = 1;
}
}
}
void senvenShow(int digit, int num){
if(digit == 1){
num7Seg(num);
digitalWrite(DG1, HIGH);
digitalWrite(DG2, HIGH);
digitalWrite(DG3, HIGH);
digitalWrite(DG4, HIGH);
digitalWrite(CLN , LOW);
digitalWrite(DG1, HIGH);
} else if(digit == 2){
num7Seg(num);
digitalWrite(DG1, HIGH);
digitalWrite(DG2, HIGH);
digitalWrite(DG3, HIGH);
digitalWrite(DG4, HIGH);
digitalWrite(CLN , LOW);
digitalWrite(DG2, LOW);
}else if(digit == 3){
num7Seg(num);
digitalWrite(DG1, HIGH);
digitalWrite(DG2, HIGH);
digitalWrite(DG3, HIGH);
digitalWrite(DG4, HIGH);
digitalWrite(CLN , LOW);
digitalWrite(DG3, LOW);
}else if(digit == 4){
num7Seg(num);
digitalWrite(DG1, HIGH);
digitalWrite(DG2, HIGH);
digitalWrite(DG3, HIGH);
digitalWrite(DG4, HIGH);
digitalWrite(CLN , LOW);
digitalWrite(DG4, LOW);
}
}
void num7Seg(int num){
if(num == 0){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, LOW);
}else if(num == 1){
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}
else if(num == 2){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}
else if(num == 3){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, HIGH);
}
else if(num == 4){
digitalWrite(A, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
else if (num == 5){
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
else if (num == 6){
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
else if (num == 7){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}
else if (num == 8){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
}
else if (num == 9){
digitalWrite(A, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(G, HIGH);
tmpnumber4 = 0;
}
}