#define pinButton 2
#define pinLED 13
volatile bool signal = false;
volatile int temp = 0;
long debounceDelay = 35;
void isr_Change() {
// Debounce interrupt trigger
static unsigned long last_interrupt_time = 0;
unsigned long interrupt_time = millis();
// If interrupts come faster than 35ms, assume it's a bounce and ignore
if (interrupt_time - last_interrupt_time > debounceDelay)
{
temp++;
if ((temp % 2) == 0) {
signal = false;
} else {
signal = true;
}
}
last_interrupt_time = interrupt_time;
}
void setup() {
Serial.begin(9600);
pinMode(pinButton, INPUT_PULLUP);
pinMode(pinLED, OUTPUT);
attachInterrupt(digitalPinToInterrupt(pinButton), isr_Change, CHANGE);
}
void loop() {
if (signal) {
delay(10);
digitalWrite(pinLED, signal);
}
}