void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
//senven segment Pin Setup
pinMode(17, OUTPUT); //A
pinMode(5, OUTPUT); //B
pinMode(18, OUTPUT); //C
pinMode(19, OUTPUT); //D
pinMode(21, OUTPUT); //E
pinMode(22, OUTPUT); //G
pinMode(23, OUTPUT); //F
//switch PIN Setup
pinMode(16, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
}
long currentTime = 0;
long lastSaveTime = 0;
bool toogle7segment = true;
int state = 0, count = 0;
void loop() {
currentTime = millis();
if(digitalRead(16) == HIGH && digitalRead(4) == HIGH ){ //read 0 0
if(state == 0){ // state 0
if(currentTime - lastSaveTime >= 1000){
lastSaveTime = currentTime;
count++;
if(toogle7segment == true ){
// on
digitalWrite(17,HIGH); //A
digitalWrite(5,HIGH); //B
digitalWrite(18,HIGH); //C
digitalWrite(19,HIGH); //D
digitalWrite(21,HIGH); //E
digitalWrite(22,LOW); //G
digitalWrite(23,HIGH); //F
}else{
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
}
toogle7segment = !toogle7segment;
}
if(count==6){
state++;
count= 0;
}
}else if(state ==1){
if(currentTime - lastSaveTime >= 500){
lastSaveTime = currentTime;
count++;
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
toogle7segment = !toogle7segment;
}
if(count==4){
state++;
count= 0;
}
} else if(state == 2){
if(currentTime - lastSaveTime >= 500){
lastSaveTime = currentTime;
count++;
if(toogle7segment == true ){
// on
digitalWrite(17,HIGH); //A
digitalWrite(5,HIGH); //B
digitalWrite(18,HIGH); //C
digitalWrite(19,HIGH); //D
digitalWrite(21,HIGH); //E
digitalWrite(22,LOW); //G
digitalWrite(23,HIGH); //F
}else{
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
}
toogle7segment = !toogle7segment;
}
if(count==12){
state++;
count= 0;
}
}else if(state ==3){
if(currentTime - lastSaveTime >= 500){
lastSaveTime = currentTime;
count++;
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
toogle7segment = !toogle7segment;
}
if(count==4){
state=0;
count= 0;
}
}
}
if(digitalRead(16) == LOW && digitalRead(4) == HIGH ){ //read 0 1
if(state == 0){ // state 0
if(currentTime - lastSaveTime >= 1000){
lastSaveTime = currentTime;
count++;
if(toogle7segment == true ){
// on
digitalWrite(17,LOW); //A
digitalWrite(5,HIGH); //B
digitalWrite(18,HIGH); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
}else{
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
}
toogle7segment = !toogle7segment;
}
if(count==6){
state++;
count= 0;
}
}else if(state ==1){
if(currentTime - lastSaveTime >= 500){
lastSaveTime = currentTime;
count++;
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
toogle7segment = !toogle7segment;
}
if(count==4){
state++;
count= 0;
}
} else if(state == 2){
if(currentTime - lastSaveTime >= 500){
lastSaveTime = currentTime;
count++;
if(toogle7segment == true ){
// on
digitalWrite(17,LOW); //A
digitalWrite(5,HIGH); //B
digitalWrite(18,HIGH); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
}else{
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
}
toogle7segment = !toogle7segment;
}
if(count==12){
state++;
count= 0;
}
}else if(state ==3){
if(currentTime - lastSaveTime >= 500){
lastSaveTime = currentTime;
count++;
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
toogle7segment = !toogle7segment;
}
if(count==4){
state=0;
count= 0;
}
}
}
if(digitalRead(16) == HIGH && digitalRead(4) == LOW ){ //read 1 0
if(state == 0){ // กระพริบ 6 ครั้ง
if(currentTime - lastSaveTime >= 1000){
lastSaveTime = currentTime;
count++;
if(toogle7segment == true ){
// on
digitalWrite(17, HIGH);//A
digitalWrite(5, HIGH);//B
digitalWrite(18, LOW);//C
digitalWrite(19, HIGH);//D
digitalWrite(21, HIGH);//E
digitalWrite(22, HIGH);//G
digitalWrite(23, LOW); //F
}else{
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
}
toogle7segment = !toogle7segment;
}
if(count==6){
state++;
count= 0;
}
}else if(state ==1){ //กระพริบ3ครั้ง
if(currentTime - lastSaveTime >= 500){
lastSaveTime = currentTime;
count++;
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
toogle7segment = !toogle7segment;
}
if(count==4){
state++;
count= 0;
}
} else if(state == 2){
if(currentTime - lastSaveTime >= 500){
lastSaveTime = currentTime;
count++;
if(toogle7segment == true ){
// on
digitalWrite(17, HIGH);//A
digitalWrite(5, HIGH);//B
digitalWrite(18, LOW);//C
digitalWrite(19, HIGH);//D
digitalWrite(21, HIGH);//E
digitalWrite(22, HIGH);//G
digitalWrite(23, LOW); //F
}else{
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
}
toogle7segment = !toogle7segment;
}
if(count==12){
state++;
count= 0;
}
}else if(state ==3){
if(currentTime - lastSaveTime >= 500){
lastSaveTime = currentTime;
count++;
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
toogle7segment = !toogle7segment;
}
if(count==4){
state=0;
count= 0;
}
}
}
if(digitalRead(16) == LOW && digitalRead(4) == LOW ){ //read 0 0
if(state == 0){ // state 0
if(currentTime - lastSaveTime >= 1000){
lastSaveTime = currentTime;
count++;
if(toogle7segment == true ){
// on
digitalWrite(17, HIGH);//A
digitalWrite(5, HIGH);//B
digitalWrite(18, HIGH);//C
digitalWrite(19, HIGH);//D
digitalWrite(21, LOW);//E
digitalWrite(22, HIGH);//G
digitalWrite(23, LOW); //F
}else{
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
}
toogle7segment = !toogle7segment;
}
if(count==6){
state++;
count= 0;
}
}else if(state ==1){
if(currentTime - lastSaveTime >= 500){
lastSaveTime = currentTime;
count++;
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
toogle7segment = !toogle7segment;
}
if(count==4){
state++;
count= 0;
}
} else if(state == 2){
if(currentTime - lastSaveTime >= 500){
lastSaveTime = currentTime;
count++;
if(toogle7segment == true ){
// on
digitalWrite(17, HIGH);//A
digitalWrite(5, HIGH);//B
digitalWrite(18, HIGH);//C
digitalWrite(19, HIGH);//D
digitalWrite(21, LOW);//E
digitalWrite(22, HIGH);//G
digitalWrite(23, LOW); //F
}else{
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
}
toogle7segment = !toogle7segment;
}
if(count==12){
state++;
count= 0;
}
}else if(state ==3){
if(currentTime - lastSaveTime >= 500){
lastSaveTime = currentTime;
count++;
// of
digitalWrite(17,LOW); //A
digitalWrite(5,LOW); //B
digitalWrite(18,LOW); //C
digitalWrite(19,LOW); //D
digitalWrite(21,LOW); //E
digitalWrite(22,LOW); //G
digitalWrite(23,LOW); //F
toogle7segment = !toogle7segment;
}
if(count==4){
state=0;
count= 0;
}
}
}
}