#define LED_PIN 21
#define BUTTON_PIN 33
byte buttonState;
volatile byte buttonReleased = false;
byte LEDState;
void IRAM_ATTR buttonReleasedInterrupt() {
// ISR triggered byt BUTTON_PIN FALLING
buttonReleased = true;
}
void toggleLED() {
if (LEDState == LOW) {
LEDState = HIGH;
} else {
LEDState = LOW;
}
digitalWrite(LED_PIN, LEDState);
}
void setup() {
Serial.begin(115200);
pinMode(BUTTON_PIN, INPUT);
LEDState = LOW;
pinMode(LED_PIN, OUTPUT);
attachInterrupt(digitalPinToInterrupt(BUTTON_PIN),
buttonReleasedInterrupt,
FALLING);
}
void loop() {
if (buttonReleased) {
buttonReleased = false; // reset the state variable
toggleLED(); // process the action
}
}