Metainformationen zur Seite
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:informatik:arduino:lauflicht_ueber_taster [2020/02/07 15:17] m.lange angelegt |
faecher:informatik:arduino:lauflicht_ueber_taster [2020/02/07 15:50] (aktuell) m.lange |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Lauflicht über Taster ====== | ====== Lauflicht über Taster ====== | ||
+ | {{:faecher:informatik:arduino:lauflicht-mit-taster2.png?600|}} | ||
- | <code> | + | Das folgende Programm soll die einzelnen LEDs nach und nach auf Tastendruck einschalten. |
+ | <code c> | ||
int aktuell; // hier drin wird der Pin der LED gespeichert, die gerade an sein soll | int aktuell; // hier drin wird der Pin der LED gespeichert, die gerade an sein soll | ||
void setup() { | void setup() { | ||
Zeile 24: | Zeile 26: | ||
} | } | ||
digitalWrite(aktuell, HIGH); // naechste LED einschalten | digitalWrite(aktuell, HIGH); // naechste LED einschalten | ||
+ | // Marke 2 | ||
} | } | ||
- | // Marke fuer spaeter | + | // Marke 1 fuer spaeter |
} | } | ||
</code> | </code> | ||
+ | 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: | ||
+ | |||
+ | <code c> | ||
+ | delay(100); | ||
+ | </code> | ||
+ | |||
+ | 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**": | ||
+ | <code c> | ||
+ | while( !digitalRead(2) ){delay(10);} | ||
+ | </code> | ||
+ | Diese Zeile wird so lange aufgeführt, bis der Taster wieder losgelassen wurde. | ||