====== Lauflicht über Taster 2 ======
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-taster3b.png?600|}}
int aktuell; // hier drin wird der Pin der LED gespeichert, die gerade an sein soll
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)) {
digitalWrite(aktuell, LOW); // Aktuell leuchtende LED ausschalten
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
while( !digitalRead(11) ){delay(10);}
}
if (!digitalRead(12)) {
digitalWrite(aktuell, LOW); // Aktuell leuchtende LED ausschalten
aktuell = aktuell - 1;
if (aktuell == 1) { // An Pin 6 ist keine LED mehr, also wieder von vorne
aktuell = 4;
}
digitalWrite(aktuell, HIGH); // naechste LED einschalten
while( !digitalRead(12) ){delay(10);}
}
}
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".
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
}
}