const byte LED_PIN = 23;
const byte INTERRUPT_PIN = 34;
volatile byte state = HIGH;
void IRAM_ATTR blink() {
state = !state;
}
void setup() {
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
pinMode(INTERRUPT_PIN, INPUT);
attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), blink, CHANGE);
}
void loop() {
digitalWrite(LED_PIN, state);
while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
if (inChar == 'Q' || inChar == 'q') {
detachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN));
Serial.println("Interrupt disabled");
}
else if (inChar == 'O' || inChar == 'o') {
attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), blink, CHANGE);
Serial.println("Interrupt enabled");
}
}
}