int M1=13, M2=19, M3=23, M4=27;
int K1=14, K2=21, K3=25, K4=32;
int H1=18, H2=22, H3=26, H4=33;
int delay_on=5000, delay_off=2000;
int btn_pin=15;
volatile bool buttonPressed = false;
int ledState = 0;
void IRAM_ATTR handleInterrupt()
{
buttonPressed = true;
}
void setup() {
pinMode(M1,OUTPUT);
pinMode(K1,OUTPUT);
pinMode(H1,OUTPUT);
pinMode(M2,OUTPUT);
pinMode(K2,OUTPUT);
pinMode(H2,OUTPUT);
pinMode(M3,OUTPUT);
pinMode(K3,OUTPUT);
pinMode(H3,OUTPUT);
pinMode(M4,OUTPUT);
pinMode(K4,OUTPUT);
pinMode(H4,OUTPUT);
pinMode(btn_pin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(btn_pin),handleInterrupt, RISING);
}
void reset(){
digitalWrite(M1,LOW);
digitalWrite(K1,LOW);
digitalWrite(H1,LOW);
digitalWrite(M2,LOW);
digitalWrite(K2,LOW);
digitalWrite(H2,LOW);
digitalWrite(M3,LOW);
digitalWrite(K3,LOW);
digitalWrite(H3,LOW);
digitalWrite(M4,LOW);
digitalWrite(K4,LOW);
digitalWrite(H4,LOW);
}
void J1H(){
digitalWrite(M1,LOW);
digitalWrite(K1,LOW);
digitalWrite(H1,HIGH);
}
void J2H(){
digitalWrite(M2,LOW);
digitalWrite(K2,LOW);
digitalWrite(H2,HIGH);
}
void J3H(){
digitalWrite(M3,LOW);
digitalWrite(K3,LOW);
digitalWrite(H3,HIGH);
}
void J4H(){
digitalWrite(M4,LOW);
digitalWrite(K4,LOW);
digitalWrite(H4,HIGH);
}
void J1K(){
digitalWrite(M1,LOW);
digitalWrite(K1,HIGH);
digitalWrite(H1,LOW);
}
void J2K(){
digitalWrite(M2,LOW);
digitalWrite(K2,HIGH);
digitalWrite(H2,LOW);
}
void J3K(){
digitalWrite(M3,LOW);
digitalWrite(K3,HIGH);
digitalWrite(H3,LOW);
}
void J4K(){
digitalWrite(M4,LOW);
digitalWrite(K4,HIGH);
digitalWrite(H4,LOW);
}
void J1M(){
digitalWrite(M1,HIGH);
digitalWrite(K1,LOW);
digitalWrite(H1,LOW);
}
void J2M(){
digitalWrite(M2,HIGH);
digitalWrite(K2,LOW);
digitalWrite(H2,LOW);
}
void J3M(){
digitalWrite(M3,HIGH);
digitalWrite(K3,LOW);
digitalWrite(H3,LOW);
}
void J4M(){
digitalWrite(M4,HIGH);
digitalWrite(K4,LOW);
digitalWrite(H4,LOW);
}
void loop() {
// put your main code here, to run repeatedly:
if (buttonPressed) {
reset();
for(int i=0; i<5; i++){
digitalWrite(K1,LOW);
digitalWrite(K2,LOW);
digitalWrite(K3,LOW);
digitalWrite(K4,LOW);
delay(1000);
digitalWrite(K1,HIGH);
digitalWrite(K2,HIGH);
digitalWrite(K3,HIGH);
digitalWrite(K4,HIGH);
delay(1000);
}
buttonPressed=false;
}
switch (ledState){
case 0:
J1H();
J2M();
J3M();
J4M();
delay(delay_on);
J1K();
delay(delay_off);
ledState++;
break;
case 1:
J1M();
J2H();
J3M();
J4M();
delay(delay_on);
J2K();
delay(delay_off);
ledState++;
break;
case 2:
J1M();
J2M();
J3H();
J4M();
delay(delay_on);
J3K();
delay(delay_off);
ledState++;
break;
case 3:
J1M();
J2M();
J3M();
J4H();
delay(delay_on);
J4K();
delay(delay_off);
ledState=0;
break;
}
delay(10); // this speeds up the simulation
}