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).