#define ROT 5
// nur Port 2 und 3 können mit
// attachInterrupt angesprochen werden
#define TASTER 2
/*
je nach Zustand der Variable TasterStatus ist die LED ein-
oder ausgeschaltet
beim Start des Programms ist sie ausgeschaltet
*/
volatile bool TasterStatus = LOW;
void setup()
{
pinMode(ROT, OUTPUT);
// Eingangspegel auf HIGH setzen
pinMode(TASTER, INPUT_PULLUP);
/*
wenn der Taster gedrückt wird
⇒ Funktion LEDSchalten aufrufen
CHANGE ⇒ es ist eine Veränderung eingetreten,
der Taster wurde gedrückt
*/
attachInterrupt(digitalPinToInterrupt(TASTER), LEDSchalten, CHANGE);
}
void loop()
{
// nichts zu tun
// das Programm reagiert nur auf den Interrupt
}
void LEDSchalten()
{
// TasterStatus wird gelesen
TasterStatus = digitalRead(TASTER);
/*
TasterStatus muss "umgedreht" werden
weil TasterStatus bei gedrücktem Taster den Wert LOW hat
die LED aber leuchten soll
*/
digitalWrite(ROT, !TasterStatus);
}