int ledPin = 13;
int buttonPin = 2;
//volatile ISR = button_ISR;
int ledToggle;
int previousState = HIGH;
unsigned int previousPress;
volatile int buttonFlag;
int buttonDebounce = 20;
void button_ISR() {
buttonFlag = 1;
}
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2), button_ISR, CHANGE);
}
void loop() {
if ((millis() - previousPress) > buttonDebounce && buttonFlag) {
previousPress = millis();
if (digitalRead(buttonPin) == LOW && previousState == HIGH) {
ledToggle = ! ledToggle;
digitalWrite(ledPin, ledToggle);
previousState = LOW;
} else if (digitalRead(buttonPin) == HIGH && previousState == LOW) {
previousState = HIGH;
}
buttonFlag = 0;
}
}