|
Knightrider (und: if)
Eine weitere Programmerweiterung des 14-Kanal-Lauflichtes.
Die Schaltung ist dieselbe.
Vielleicht kennst Du die Fernsehserie Knightrider aus den
Achtzigern. Dort spielte ein computerintelligenzgesteuertes Auto
mit. Vorn am Kühler hatte es so ein Hin-Und-Her-Lauflicht. Dieses
Lauflicht steckt im folgenden Programm.
Der Effekt beruht im Original-Knightrider-Auto wahrscheinlich
darauf, dass die dort verwendeten Glühlampen immer einwenig nachleuchteten. Dort steckte sicher mehr dahinter (z. B. Kondensatoren).
Hier wird der Effekt dadurch realisiert, dass die drei dem
"Hauptpunkt" folgenden LEDs auch noch mal für kurze Zeit
aufleuchten.
/*
Knightrider Lauflicht
LEDs an den Ausgängen: 0..13
LED Strombegrenzung: R1 = 220 Ohm
www.arduinospielwiese.de
*/
int i;
void setup()
{
for(i=0; i<14; i++){
pinMode( i, OUTPUT);
}
}
void loop() {
//nach rechts laufen:
for(i=0; i<14; i++) {
//"Hauptpunkt"
digitalWrite(i, HIGH); delay(20); digitalWrite(i, LOW);
//1. Folge-LED
if (i > 0) { digitalWrite(i-1, HIGH); delay(15); digitalWrite(i-1, LOW);}
//2. Folge-LED
if (i > 1) { digitalWrite(i-2, HIGH); delay(5); digitalWrite(i-2, LOW);}
//3. Folge-LED
if (i > 2) { digitalWrite(i-3, HIGH); delay(1); digitalWrite(i-3, LOW);}
}
//nach links laufen:
for(i=13; i>0; i--){
digitalWrite(i, HIGH); delay(20);
digitalWrite(i, LOW);
if (i < 13) {digitalWrite(i+1, HIGH);
delay(15); digitalWrite(i+1, LOW);}
if (i < 12) {digitalWrite(i+2, HIGH);
delay(5); digitalWrite(i+2, LOW); }
if (i < 11) {digitalWrite(i+3, HIGH);
delay(1); digitalWrite(i+3, LOW); }
}
}
Du hast sicher schon den neuen Befehl entdeckt: if.
if heißt auf deutsch wenn oder falls.
Der Befehl if dient dazu,
dass eine Anweisung nur
dann ausgeführt wird, wenn
eine Bedingung erfüllt
ist.
So hier: if (Bedingung) {Anweisung;}
Die Anweisung wird nur dann ausgeführt, nachdem die Bedingung
getestet und für WAHR
befunden wurde.
In unserem Falle sorgen die Bedingungen dafür, dass keine LEDs
leuchten, die es sowieso nicht gibt (z. B. eine LED 16 oder eine
LED -1).
|