1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #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); } |