/* CVO De Verdieping: Arduino
Sketch: Interrupt voorbeeld 2
Oefening Interrupt 2
Met een sketch zodat we een LED (pin 13) kunnen aan en uitschakelen
met een drukknop (pin 2). Doe dit met behulp van een interrupt.
In de functie void loop() zorgen we ervoor dat de ISR eerst 2 seconden
attached is (LED op pin 12 brandt), daarna is de ISR 2 seconden
detached (LED 12 dooft).
Houtmeyers Patrick
2023 - 2024
*/
// CONSTANTEN
const int PIN_LED = 13;
const int PIN_LED_STATUS = 12;
const int KNOP_PIN = 2;
// (GLOBALE) VARIABELEN
int interruptNummer;
// VOORBEREIDING
void setup()
{
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_LED_STATUS, OUTPUT);
pinMode(KNOP_PIN, INPUT);
interruptNummer = digitalPinToInterrupt(KNOP_PIN); // Geeft ons 0, pin 2 is INT0
}
// UITVOERING
void loop()
{
digitalWrite(PIN_LED_STATUS, HIGH);
attachInterrupt(interruptNummer, isrToggleLed, RISING);
delay(2000);
digitalWrite(PIN_LED_STATUS, LOW);
detachInterrupt(interruptNummer);
delay(2000);
}
// ISR: Interrupt Service Routine
void isrToggleLed()
{
int toestandLed = digitalRead(PIN_LED);
toestandLed = not toestandLed;
digitalWrite(PIN_LED, toestandLed);
}