#define led_pin1 32
#define led_pin2 33
#define led_pin3 25
#define button_pin 26
int i=0;
hw_timer_t * timer1 = NULL;
hw_timer_t * timer2 = NULL;
hw_timer_t * timer3 = NULL;
void IRAM_ATTR onTimer1() {
digitalWrite(led_pin1, !digitalRead(led_pin1));
}
void IRAM_ATTR toggleLED() {
//write here code to change LOW->HIGH and HIGH->LOW
i=1;
}
void IRAM_ATTR onTimer2() {
digitalWrite(led_pin2, !digitalRead(led_pin2));
}
void IRAM_ATTR onTimer3() {
digitalWrite(led_pin3, !digitalRead(led_pin3));
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(led_pin1, OUTPUT);
pinMode(led_pin2, OUTPUT);
pinMode(led_pin3, OUTPUT);
timer1 = timerBegin(0, 80, true);
timerAttachInterrupt(timer1, &onTimer1, true);
timerAlarmWrite(timer1, 500000, true);
timerAlarmEnable(timer1);
timer2 = timerBegin(1, 80, true);
timerAttachInterrupt(timer2, &onTimer2, true);
timerAlarmWrite(timer2, 800000, true);
timerAlarmEnable(timer2);
timer3 = timerBegin(2, 80, true);
timerAttachInterrupt(timer3, &onTimer3, true);
timerAlarmWrite(timer3, 1200000, true);
timerAlarmEnable(timer3);
attachInterrupt(button_pin, toggleLED, FALLING);
}
void loop() {
if (i==1) {
timerAlarmDisable(timer1);
timerAlarmDisable(timer2);
timerAlarmDisable(timer3);
digitalWrite(led_pin1, LOW);
digitalWrite(led_pin2, LOW);
digitalWrite(led_pin3, LOW);
delay(2000);
timerAlarmEnable(timer1);
timerAlarmEnable(timer2);
timerAlarmEnable(timer3);
i=0;
}
}