# define ROT 5 // nur Port 2 und 3 koennen mit // attachInterrupt angesprochen werden # define TASTER 2 /* je nach Zustand der Variable TasterStatus ist die LED ein- oder ausgeschaltet bei Start des Programms ist sie ausgeschaltet */ volatile bool TasterStatus = LOW; void setup() { pinMode(ROT, OUTPUT); // Vorwiderstand einschalten pinMode(TASTER, INPUT_PULLUP); /* wenn der Taster gedrueckt wird → Methode LEDSchalten aufrufen CHANGE → es ist eine Veraenderung eingetreten, der Taster wurde gedrueckt */ 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 gedruecktem Taster den Wert LOW hat die LED aber leuchten soll */ digitalWrite(ROT, !TasterStatus); }