#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 COLON 26
unsigned long currentTime = 0;
unsigned long lasttTime = 0;
bool ToogleLED = true;
int stateDigit = 4;
int numberMIN = 0, numberSEC = 0;
int tmpnumber1, tmpnumber2, tmpnumber3, tmpnumber4;
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32!");
numberMIN = 0;
numberSEC = 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(COLON, OUTPUT);
digitalWrite(COLON, HIGH);
}
char menuChoice = '0';
bool start = false;
int secTime = 0;
int colonTime = 0;
void loop() {
currentTime = millis();
// 100Hz
// switch(menuChoice) {
// case 1:
// break;
// case 2:
// break;
// default:
// break;
// }
while (Serial.available() > 0) {
menuChoice = Serial.read();
if(menuChoice == '1') {
stateDigit = 1;
start = true;
} else if (menuChoice == '2') {
digitalWrite( DG1, HIGH );
digitalWrite( DG2, HIGH );
digitalWrite( DG3, HIGH );
digitalWrite( DG4, HIGH );
start = false;
}
}
if(currentTime - secTime >= 50 && start) {
secTime = currentTime;
if(++numberSEC < 60) {
tmpnumber3 = numberSEC / 10;
tmpnumber4 = numberSEC % 10;
} else {
numberSEC=0;
tmpnumber3 = numberSEC / 10;
tmpnumber4 = numberSEC % 10;
numberMIN++;
tmpnumber1 = numberMIN / 10;
tmpnumber2 = numberMIN % 10;
}
Serial.printf("Clock RUN -> %d%d:%d%d\n",tmpnumber1, tmpnumber2, tmpnumber3, tmpnumber4);
} else if (currentTime - secTime >= 1000 && !start) {
secTime = currentTime;
Serial.printf("Clock STOP -> %d%d:%d%d\n",tmpnumber1, tmpnumber2, tmpnumber3, tmpnumber4);
}
if(currentTime - colonTime >= 500 && start) {
colonTime = currentTime;
digitalWrite(COLON, !digitalRead(COLON));
}
if(currentTime - lasttTime >= 20 && start){
lasttTime = currentTime;
num7Seg(10);
digitalWrite( DG1, HIGH );
digitalWrite( DG2, HIGH );
digitalWrite( DG3, HIGH );
digitalWrite( DG4, HIGH );
if(stateDigit==1){
num7Seg(tmpnumber1);
digitalWrite( DG1, LOW );
digitalWrite( DG2, HIGH );
digitalWrite( DG3, HIGH );
digitalWrite( DG4, HIGH );
stateDigit = 2;
}else if(stateDigit==2){
num7Seg(tmpnumber2);
digitalWrite( DG1, HIGH );
digitalWrite( DG2, LOW );
digitalWrite( DG3, HIGH );
digitalWrite( DG4, HIGH );
stateDigit = 3;
}else if(stateDigit==3){
num7Seg(tmpnumber3);
digitalWrite( DG1, HIGH );
digitalWrite( DG2, HIGH );
digitalWrite( DG3, LOW );
digitalWrite( DG4, HIGH );
stateDigit = 4;
}else if(stateDigit==4){
num7Seg(tmpnumber4);
digitalWrite( DG1, HIGH );
digitalWrite( DG2, HIGH );
digitalWrite( DG3, HIGH );
digitalWrite( DG4, LOW );
stateDigit = 1;
}else if (stateDigit==5){
digitalWrite( DG1, HIGH );
digitalWrite( DG2, HIGH );
digitalWrite( DG3, HIGH );
digitalWrite( DG4, HIGH );
}
else {
stateDigit = 1;
}
}
}
void senvenShow(int digit, int num){
if(digit == 1){
//num7Seg(10);
num7Seg(num);
digitalWrite(DG1, HIGH);
digitalWrite(DG2, HIGH);
digitalWrite(DG3, HIGH);
digitalWrite(DG4, HIGH);
digitalWrite(DG1, LOW);
} else if(digit == 2){
//num7Seg(10);
num7Seg(num);
digitalWrite(DG1, HIGH);
digitalWrite(DG2, HIGH);
digitalWrite(DG3, HIGH);
digitalWrite(DG4, HIGH);
digitalWrite(DG2, LOW);
}else if(digit == 3){
//num7Seg(10);
num7Seg(num);
digitalWrite(DG1, HIGH);
digitalWrite(DG2, HIGH);
digitalWrite(DG3, HIGH);
digitalWrite(DG4, HIGH);
digitalWrite(DG3, LOW);
}else if(digit == 4){
//num7Seg(10);
num7Seg(num);
digitalWrite(DG1, HIGH);
digitalWrite(DG2, HIGH);
digitalWrite(DG3, HIGH);
digitalWrite(DG4, HIGH);
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(E, LOW);
digitalWrite(F, HIGH);
digitalWrite(D, HIGH);
digitalWrite(C, HIGH);
digitalWrite(G, HIGH);
} else if (num == 6) {
digitalWrite(A, HIGH);
digitalWrite(B, LOW);
digitalWrite(F, HIGH);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(G, HIGH);
digitalWrite(C, 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);
}
else if(num==10){
digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(F, LOW);
digitalWrite(G, LOW);
}
}