const int buttonPin = 2;
const int ledPin = 4;
const int ledPin2 = 5;
int buttonState = 0;
int lastMillis = 0;
void IRAM_ATTR function_ISR() {
if(millis() - lastMillis > 10){ // Software debouncing buton
ets_printf("ISR triggered\n");
buttonState = !buttonState;
digitalWrite(ledPin,buttonState);
}
lastMillis = millis();
}
void setup() {
Serial.begin(115200);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin,OUTPUT);
pinMode(ledPin2,OUTPUT);
attachInterrupt(buttonPin, function_ISR, CHANGE);
digitalWrite(ledPin, buttonState);
}
void loop() {
// Code ...
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
if(buttonState == HIGH)
{
Serial.print(buttonState);
digitalWrite(ledPin2, HIGH);
}
else
{
Serial.print(buttonState);
digitalWrite(ledPin2, LOW);
}
}