Metainformationen zur Seite
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:informatik:arduino:lauflicht_ueber_taster2 [2020/02/07 16:24] m.lange angelegt |
faecher:informatik:arduino:lauflicht_ueber_taster2 [2020/02/07 17:09] (aktuell) m.lange |
||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
Letzt kann man LEDs vorwärts und rückwerts laufen lassen. Hierzu ist ein kleiner Umbau erforderlich. **Bitte schaut genau hin!** | Letzt kann man LEDs vorwärts und rückwerts laufen lassen. Hierzu ist ein kleiner Umbau erforderlich. **Bitte schaut genau hin!** | ||
- | {{:faecher:informatik:arduino:lauflicht-mit-taster3.png?600|}} | + | {{:faecher:informatik:arduino:lauflicht-mit-taster3b.png?600|}} |
<code c> | <code c> | ||
Zeile 34: | Zeile 34: | ||
aktuell = aktuell - 1; | aktuell = aktuell - 1; | ||
if (aktuell == 1) { // An Pin 6 ist keine LED mehr, also wieder von vorne | if (aktuell == 1) { // An Pin 6 ist keine LED mehr, also wieder von vorne | ||
- | aktuell = 4;https://ratsgymnasium-pe.de/ratsewiki/doku.php?id=faecher:informatik:arduino:lauflicht_ueber_taster | + | aktuell = 4; |
} | } | ||
digitalWrite(aktuell, HIGH); // naechste LED einschalten | digitalWrite(aktuell, HIGH); // naechste LED einschalten | ||
Zeile 45: | Zeile 45: | ||
Auch dieses Programm läuft nicht ganz wie gehofft, wenn ein Taster gedrück ist, ist der andere Taster blockiert. Die while-Schleifen "halten den Programmablauf gefangen". | Auch dieses Programm läuft nicht ganz wie gehofft, wenn ein Taster gedrück ist, ist der andere Taster blockiert. Die while-Schleifen "halten den Programmablauf gefangen". | ||
+ | <code c> | ||
+ | int aktuell; // hier drin wird der Pin der LED gespeichert, die gerade an sein soll | ||
+ | int zustand1 = 0; | ||
+ | int zustand2 = 0; | ||
+ | void setup() { | ||
+ | pinMode(11, INPUT_PULLUP); // Eingang | ||
+ | pinMode(12, INPUT_PULLUP); // Eingang | ||
+ | pinMode(2, OUTPUT); // 3 Ausgänge für die LED | ||
+ | pinMode(3, OUTPUT); | ||
+ | pinMode(4, OUTPUT); | ||
+ | digitalWrite(2, LOW); | ||
+ | digitalWrite(3, LOW); | ||
+ | digitalWrite(4, LOW); | ||
+ | | ||
+ | aktuell = 3; | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | if (!digitalRead(11)) { | ||
+ | zustand1 = 1; // Taster 1 wurde gedrueckt | ||
+ | } | ||
+ | if (digitalRead(11) && zustand1==1) { | ||
+ | digitalWrite(aktuell, LOW); // Aktuell leuchtende LED ausschalten | ||
+ | zustand1 = 0; // Das Loslassen wurde verarbeitet | ||
+ | aktuell = aktuell + 1; | ||
+ | if (aktuell == 5) { // An Pin 6 ist keine LED mehr, also wieder von vorne | ||
+ | aktuell = 2; | ||
+ | } | ||
+ | digitalWrite(aktuell, HIGH); // naechste LED einschalten | ||
+ | } | ||
+ | |||
+ | |||
+ | if (!digitalRead(12)) { | ||
+ | zustand2 = 1; | ||
+ | } | ||
+ | if (digitalRead(12) && zustand2==1) { | ||
+ | digitalWrite(aktuell, LOW); | ||
+ | zustand2 = 0; | ||
+ | aktuell = aktuell - 1; | ||
+ | if (aktuell == 1) { | ||
+ | aktuell = 4; | ||
+ | } | ||
+ | digitalWrite(aktuell, HIGH); // naechste LED einschalten | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | </code> | ||