Lekce 3

LED Tekoucí potok

Z osmi LED postavíte světelný had, který přebíhá zleva doprava a zpět – jako tekoucí voda. Naučíte se ovládat víc LED najednou pomocí cyklu for, místo abyste každý pin psali ručně.

🧩Co budeš potřebovat
Arduino USB kabel 8× LED 8× rezistor 220 Ω Breadboard Propojovací vodiče
🔌Zapojení
Schéma zapojení – LED tekoucí potok

Popisek obrázku: osm LED vedle sebe v řadě. Delší nožka každé LED jde přes vlastní rezistor 220 Ω na piny 2 až 9 (postupně), kratší nožky všech LED jsou společně připojené na GND.

🔗Připojení pinů
LED (přes rezistor 220 Ω)Arduino
LED 1pin 2
LED 2pin 3
LED 3pin 4
LED 4pin 5
LED 5pin 6
LED 6pin 7
LED 7pin 8
LED 8pin 9
kratší nožky všech LEDGND
💡Jak to funguje

Princip je jednoduchý: rozsvěcujeme osm LED za sebou, jednu po druhé, s malou prodlevou mezi nimi. Když to běží dostatečně rychle, oko vidí plynulý pohyb světla – jako vlnu nebo tekoucí vodu. Aby se kód zbytečně neopakoval osmkrát, použijeme cyklus for, který projde piny 2 až 9 a u každého řekne „rozsviť, počkej, zhasni“.

Dobré vědět: cyklus for je v programování základní nástroj – nechá vás udělat stejnou věc mnohokrát za sebou jediným kouskem kódu. Místo osmi řádků digitalWrite tak napíšete jen jeden a necháte ho proběhnout pro všechny piny.

Postup
  1. Sestavte obvod – osm LED v řadě, každou přes vlastní rezistor 220 Ω na piny 2 až 9, kratší nožky společně na GND.
  2. Zkopírujte kód do Arduino IDE.
  3. Zkompilujte ho a nahrajte do Arduina.
</>Kód
lekce03_led_tekouci_potok.ino
// LED Tekoucí potok
// Osm LED v řadě se postupně rozsvěcuje a zhasíná jako tekoucí voda
// Email: podpora@laskakit.cz · Web: laskakit.cz

const int lowestPin  = 2;   // pin první LEDky
const int highestPin = 9;   // pin poslední LEDky

void setup() {
  // nastavení pinů 2 až 9 jako výstupů
  for (int thisPin = lowestPin; thisPin <= highestPin; thisPin++) {
    pinMode(thisPin, OUTPUT);
  }
}

void loop() {
  // rozsvítit LEDky od první do poslední
  for (int thisPin = lowestPin; thisPin <= highestPin; thisPin++) {
    digitalWrite(thisPin, HIGH);   // zapnout LEDku
    delay(100);                       // počkat 100 ms
  }
  // zhasnout LEDky od poslední do první
  for (int thisPin = highestPin; thisPin >= lowestPin; thisPin--) {
    digitalWrite(thisPin, LOW);    // vypnout LEDku
    delay(100);
  }
  // a zpět – rozsvítit od poslední do první
  for (int thisPin = highestPin; thisPin >= lowestPin; thisPin--) {
    digitalWrite(thisPin, HIGH);
    delay(100);
  }
  // zhasnout od první do poslední
  for (int thisPin = lowestPin; thisPin <= highestPin; thisPin++) {
    digitalWrite(thisPin, LOW);
    delay(100);
  }
}
Výsledek
💡
Po nahrání se LED budou rozsvěcet jedna po druhé zleva doprava a zase zpět – jako vlna běžící tam a zpět. Celé se to opakuje dokola, dokud je deska napájená.
Časté chyby
?Kontrolní otázka

QČím v této lekci docílíme toho, abychom neopakovali stejný příkaz osmkrát pro každou LED?