#define SW1 13
#define SW2 12
int KeyPressesSW1 = 0;
bool statusSW1 = false;
int KeyPressesSW2 = 0;
bool statusSW2 = false;
unsigned long last_time = 0;
int count = 0;
void IRAM_ATTR isrSW1() {
statusSW1 = !statusSW1;
}
void IRAM_ATTR isrSW2() {
statusSW2 = !statusSW2;
}
void setup() {
Serial.begin(115200);
pinMode(SW1, INPUT);
pinMode(SW2, INPUT);
attachInterrupt(SW1, isrSW1, CHANGE);
attachInterrupt(SW2, isrSW2, CHANGE);
pinMode(23, OUTPUT); //f
pinMode(22, OUTPUT); //g
pinMode(21, OUTPUT); //e
pinMode(19, OUTPUT); //dp
pinMode(18, OUTPUT); //c
pinMode(5, OUTPUT); //a
pinMode(4, OUTPUT); //b
pinMode(15, OUTPUT); //d
}
void loop() {
if (millis() - last_time > 500) {
digitalWrite(2, !digitalRead(2));
last_time = millis();
if ((count == 1) || (count == 2) || (count == 5) || (count == 6) || (count == 9) || (count == 10) || (count == 15) || (count == 17) || (count == 19) || (count == 21) || (count == 23) || (count == 25)) {
if ((digitalRead(SW1)) && (digitalRead(SW2))) {
zero();
}
else if (!digitalRead(SW1) && (digitalRead(SW2))) {
one();
}
else if ( !digitalRead(SW2) && (digitalRead(SW1))) {
two();
}
else if ((!digitalRead(SW1)) && (!digitalRead(SW2))) {
three();
}
}
else if ((count == 3) || (count == 4) || (count == 7) || (count == 8) || (count == 11) || (count == 12) || (count == 13) || (count == 14) || (count == 16) || (count == 18) || (count == 20) || (count == 22) || (count == 24) || (count == 26)) {
kapip();
}
count++;
}
}
void zero() {
digitalWrite(23, HIGH);
digitalWrite(21, HIGH);
digitalWrite(18, HIGH);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
digitalWrite(15, HIGH);
digitalWrite(22, LOW);
}
void kapip() {
digitalWrite(23, LOW);
digitalWrite(21, LOW);
digitalWrite(18, LOW);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(15, LOW);
digitalWrite(22, LOW);
}
void one() {
digitalWrite(23, LOW);
digitalWrite(21, LOW);
digitalWrite(18, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(15, LOW);
digitalWrite(22, LOW);
}
void two() {
digitalWrite(23, LOW);
digitalWrite(21, HIGH);
digitalWrite(18, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
digitalWrite(15, HIGH);
digitalWrite(22, HIGH);
}
void three() {
digitalWrite(23, LOW);
digitalWrite(21, LOW);
digitalWrite(18, HIGH);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
digitalWrite(15, HIGH);
digitalWrite(22, HIGH);
}