====== Lauflicht über Taster ====== {{:faecher:informatik:arduino:lauflicht-mit-taster2.png?600|}} Das folgende Programm soll die einzelnen LEDs nach und nach auf Tastendruck einschalten. int aktuell; // hier drin wird der Pin der LED gespeichert, die gerade an sein soll void setup() { pinMode(2, INPUT_PULLUP); // Eingang pinMode(3, OUTPUT); // 3 Ausgänge für die LED pinMode(4, OUTPUT); pinMode(5, OUTPUT); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); aktuell = 3; } void loop() { if (!digitalRead(2)) { digitalWrite(aktuell, LOW); // Aktuell leuchtende LED ausschalten aktuell = aktuell + 1; if (aktuell == 6) { // An Pin 6 ist keine LED mehr, also wieder von vorne aktuell = 3; } digitalWrite(aktuell, HIGH); // naechste LED einschalten // Marke 2 } // Marke 1 fuer spaeter } Das Programm funktiniert noch nicht wie gewollt, die LEDs leuchten alle (wie genau?) und wenn man den Taster los lässt, leuchtet eine zufällige LED. Um den Fehler aufzuspüren baut man nach der "**Marke 1**" ein: delay(100); Man sieht nun, was passiert, in schneller Folge werden die LEDs geschaltet. Was ist der Fehler? Die Zeile "**if (!digitalRead(2)) {**" fragt nur ab, ob ein Taster gedrückt ist, nicht ob er wieder losgelassen wurde. Also bauen wir ein warten bis der Taster wieder losgelassen wurde ein. Nach "**Marke 2**": while( !digitalRead(2) ){delay(10);} Diese Zeile wird so lange aufgeführt, bis der Taster wieder losgelassen wurde.