Lekce 4

Interaktivní tekoucí LED světla

Čtvrtá lekce Arduino kurzu pro začátečníky: k tekoucím LED přidáte potenciometr a naučíte se jím za běhu řídit rychlost celého efektu. Ukážeme si zapojení, kód do Arduino IDE i to, jak Arduino čte analogový vstup – otočením knoflíku zrychlíte nebo zpomalíte přebíhání světel.

🧩Co budeš potřebovat
Arduino USB kabel Breadboard 8× LED 8× rezistor 220 Ω Potenciometr Propojovací vodiče
🔌Zapojení
Schéma zapojení Arduino – interaktivní tekoucí LED světla s potenciometrem, 8 LED na pinech 2 až 9

Popisek obrázku: osm LED v řadě, každá přes vlastní rezistor 220 Ω do GND. Anody LED vedou postupně na piny 2 aķ 9. Potenciometr má krajní nožičky na 5 V a GND, prostřední (běžec) na analogový vstup A0.

🔗Připojení pinů
KomponentaArduino
LED 1 – 8 (anody, každá přes 220 Ω)piny 2 – 9
LED (katody)GND
Potenciometr (krajní nožičky)5V a GND
Potenciometr (běžec, prostřední)A0
💡Jak to funguje

LED se rozsvěcují jedna po druhé a vytvářejí dojem tekoucí vlny, která se na konci řady odrazí a vrací zpět. Novinkou je potenciometr: jeho běžec posílá na vstup A0 napětí, které Arduino přečte funkcí analogRead jako číslo 0 – 1023. Tuto hodnotu použijeme jako pauzu mezi přepnutím LED. Otáčením knoflíku tak měníte interval – čím větší číslo, tím delší prodleva a pomalejší světla. Aby čas běžel hladce, nepoužíváme delay, ale funkci millis, která hlídá uplynulý čas na pozadí.

Postup
  1. Sestavte obvod podle schématu výše – osm LED s rezistory na piny 2 aķ 9 a potenciometr s běžcem na A0.
  2. Zkopírujte kód do Arduino IDE.
  3. Zkompilujte ho, nahrajte do Arduina a otáčením potenciometru měňte rychlost vlny.
</>Kód
lekce04_interaktivni_tekouci_led.ino
// Interaktivní LED tekoucí potok
// Osm LED se rozsvěcuje jedna po druhé a potenciometrem měníte rychlost.
// Email: podpora@laskakit.cz · Web: laskakit.cz

int ledNum = 8;                          // počet LEDek
byte ledPin[] = { 2, 3, 4, 5, 6, 7, 8, 9 };  // pole pinů s LED
int ledDelay;                          // pauza mezi změnami
int direction = 1;                      // směr přebíhání
int currentLED = 0;                     // právě svítící LED
unsigned long changeTime;             // čas poslední změny
int potPin = A0;                       // pin potenciometru jako vstup

void setup() {
  for (int x = 0; x < ledNum; x++) {
    // nastavení pinů 2 až 9 jako výstupů
    pinMode(ledPin[x], OUTPUT);
  }
  changeTime = millis();
}

void loop() {
  ledDelay = analogRead(potPin);     // přečíst hodnotu potenciometru
  // po uplynutí intervalu přepnout na další LED
  if ((millis() - changeTime) > ledDelay) {
    changeLED();
    changeTime = millis();
  }
}

void changeLED() {
  for (int x = 0; x < ledNum; x++) {
    // vypnout všechny LEDky
    digitalWrite(ledPin[x], LOW);
  }
  // zapnout aktuální LEDku
  digitalWrite(ledPin[currentLED], HIGH);
  currentLED += direction;
  // na konci řady otočit směr
  if (currentLED == ledNum - 1) {
    direction = -1;
  }
  if (currentLED == 0) {
    direction = 1;
  }
}
Výsledek
💡
Po nahrání uvidíte osm LED, které se rozsvěcují jedna po druhé a vlna přebíhá tam a zpět. Když teď otočíte potenciometrem, rychlost přebíhání se plynule změní – máte za sebou svůj první obvod, který reaguje na vstup od uživatele za běhu!
Časté chyby
?Kontrolní otázka

QCo v tomto obvodu ovlivňuje otáčení potenciometrem?