Lauf­licht mit blin­ken­den LEDs

Lese­zeit: 4 Minu­ten

Lösung
Seite als PDF

Die LEDs sol­len nach­ein­an­der zufäl­lig oft blin­ken. Auch die Leucht­dau­er soll zufäl­lig bestimmt wer­den.
Um das zu rea­li­sie­ren, wären vie­le Pro­gramm­zei­len nötig, die immer wie­der die glei­chen Befeh­le aus­füh­ren. Die Pro­gram­mier­spra­che bie­tet die Mög­lich­keit, häu­fig ver­wen­de­te Befeh­le in einem geson­der­ten Pro­gramm­teil (einer Funk­ti­on) „aus­zu­la­gern“.

So sieht es aus:

Benö­tig­te Bauteile:

  • 5 LEDs
  • 3 Wider­stän­de 220 Ω (gel­be, rote und grü­ne LED)
  • 2 Wider­stän­de 100 Ω (blaue und wei­ße LED)
  • Lei­tungs­dräh­te

Beach­te die ➨Vor­wi­der­stän­de ver­schie­de­ner LEDs

Baue die Schal­tung auf:
(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen)

Jede Funk­ti­on muss außer­halb des set­up und des loop-Teils stehen. 

Bei­spiel:

void LEDBlinken() 
{ 
  digitalWrite(LED, HIGH); 
  delay(500); 
  digitalWrite(LED, LOW); 
  delay(500); 
}

Die Funk­ti­on LED­Blin­ken() kann jetzt belie­big oft im loop-Teil auf­ge­ru­feń werden.

LED­Blin­ken();

Funk­tio­nen kön­nen auch mit Para­me­tern auf­ge­ru­fen werden:

Bei­spiel:

void LEDBlinken(int LEDNummer, int LeuchtDauer) 
{ 
  digitalWrite(LEDNummer, HIGH); 
  delay(Leuchtdauer); 
  digitalWrite(LEDNummer, LOW); 
  delay(Leuchtdauer); 
}

Der Auf­ruf sieht dann so aus:

LEDBlinken(6, 1000);

Die LED an Pin 6 blinkt eine Sekunde.

Wei­te­re Informationen

Die LEDs wer­den wie­der in einem Array ange­legt
Zusätz­lich wer­den noch Varia­blen für die Num­mer der LED und die Anzahl der Blink­vor­gän­ge benötigt: 

int LED[5] = {3, 4, 5, 6, 7};
int AnzahlBlinken; 
int LEDNummer;

Im set­up-Teil erle­digt eine for-Schlei­fe die Zuord­nung der LEDs als OUTPUT:

void setup()
{
  for (int i = 0; i <= 4; i ++)
  {
    pinMode(LED[i], OUTPUT);
  }

   // Zufallsgenerator starten
   randomSeed(analogRead(0));
}

Defi­nie­re eine Funk­ti­on LED­Blin­ken, der als Varia­ble die Num­mer der LED und die Anzahl der Blink­vor­gän­ge über­ge­ben werden

void LEDBlinken(int LEDNummer, int Anzahl, int Leuchtdauer) 
{ 
  for (int i = 0; i <= Anzahl; i ++)   
  {  
    digitalWrite(LEDNummer, HIGH);   
    delay(Leuchtdauer);   
    digitalWrite(LEDNummer, LOW);   
    delay(Leuchtdauer); 
  }
}

Im loop-Teil wird die Anzahl der Blink­vor­gän­ge und die Leucht­dau­er der LED zufäl­lig bestimmt und die Funk­ti­on LED­Blin­ken mit der Num­mer der LED, der Anzahl der Blink­vor­gän­ge und die Leucht­dau­er der jewei­li­gen LED aufgerufen:

void loop()  
{ 
  for (int i = 0; i <= 4; i ++)    
  {  
    // Anzahl des Blinkens der LEDs zufällig bestimmen       
    AnzahlBlinken = random(1, 5);   

    // Leuchtdauer zufällig bestimmen
    int Leuchtdauer = random(50, 500);  

    /* 
      aktuelle LED i einschalten     
      -> Funktion LEDBlinken aufrufen   
    */    
    LEDBlinken(LED[i], AnzahlBlinken, Leuchtdauer);   
  } 
}

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 18. Apr 2024 @ 8:38