Hľadať kód

Lekcia 98-7: Chôdza so svetlom pomocou Arduina a 5 LED diód

Lekcia 98-7: Chôdza so svetlom pomocou Arduina a 5 LED diód

Bežiaci svetelný efekt (nazývaný aj „chasing" alebo „Knight Rider" svetlo) je jedným z klasických začiatočníckych projektov s Arduinom — a to z dobrého dôvodu. Naučí vás, ako ovládať viacero výstupov v poradí, ako časovať udalosti a ako uvažovať o rezistoroch obmedzujúcich prúd, a to všetko pri vytváraní vizuálne uspokojivého výsledku. V tomto projekte zapojíte päť LED diód k Arduinu a naprogramujete ich tak, aby sa každá postupne rozsvietila, čím vytvoríte ilúziu jedného svetla „kráčajúceho" po rade.

5 leds on breadboard with resistor shown connected to Arduino UNO
5 LED diód na nepájivom poli s rezistorom pripojeným k Arduino UNO

Keď raz pochopíte tento vzor, môžete ho premeniť na prekvapivo veľké množstvo reálnych aplikácií:

  • Dekoratívne osvetlenie: bežiaci okraj police, rámu obrazu alebo modelu.
  • Smerové ukazovatele: efekt sekvenčného smerového svetla pre rekvizitné vozidlo alebo e-bicykel.
  • Zobrazenie priebehu alebo stavu: rad LED diód, ktorý postupuje s dokončovaním procesu.
  • Rekvizity pre hry a výsledkové tabule: „pohyblivý terč" alebo indikátor úrovne.
  • Učebná pomôcka: najjasnejšia možná ukážka digitálnych výstupov a časovania.

Rovnaké zapojenie piatich LED diód sa znovu používa v niekoľkých ďalších projektoch v tomto kurze, takže hardvér, ktorý tu zostavíte, sa stane znovupoužiteľnou platformou.

Ako bežiaci svetelný efekt funguje

Princíp je úplne rovnaký ako pri rozsvietení jednej LED diódy — jednoducho sa päťkrát zopakuje (vo videu v čase 30:47). Každá LED dióda je pripojená k vlastnému pinu Arduina cez vlastný rezistor obmedzujúci prúd a všetky rezistory zdieľajú spoločnú zemniacu lištu. Náčrt potom nastaví jeden pin na HIGH, počká, nastaví ho na LOW, počká a prejde na ďalší pin. Pretože je vždy zapnutá len jedna LED dióda, oko vníma sekvenciu ako pohyb.

Práve dve hodnoty časovania dávajú tomuto efektu jeho charakter. Čas zapnutia určuje, ako dlho zostane každá LED dióda svietiť, a čas vypnutia určuje medzeru pred rozsvietením ďalšej LED diódy. Krátky čas zapnutia s dlhým časom vypnutia vytvára jeden rýchlo putujúci bod; dlhý čas zapnutia s krátkym časom vypnutia vytvára plynulejšie, súvislejšie prechádzanie (vo videu v čase 35:00).

Hardvér a komponenty

  • 1 × doska Arduino (Uno, Nano alebo podobná)
  • 5 × LED diód (akejkoľvek farby; miešanie farieb uľahčuje čítanie efektu)
  • 5 × rezistorov — 300 Ω až 1 kΩ fungujú dobre
  • 1 × nepájivé pole
  • Prepojovacie vodiče
  • USB kábel alebo batériový zdroj napájania

Ak neskôr chcete pridať variant s tlačidlom, budete potrebovať aj jedno momentové tlačidlo a dva ďalšie prepojovacie vodiče.

Výber hodnoty rezistora

LED dióda má prahové napätie približne 2 V a pre plnú svietivosť potrebuje približne 10 mA (vo videu v čase 03:49). Pri napájaní 5 V musí rezistor zniesť zvyšné 3 V. Aplikovaním Ohmovho zákona, R = V / I = 3 V / 0,01 A = 300 Ω. V praxi bude fungovať čokoľvek od 300 Ω do približne 1 kΩ — čím vyšší odpor, tým slabšie svetlo LED diódy, ale tým bezpečnejší a efektívnejší obvod (vo videu v čase 05:33).

Schematic for Arduino walking light LEDs with push button
Schéma pre Arduino bežiaci svetelný efekt s LED diódami a tlačidlom

Sprievodca zapojením

wiring of 5 LED on Arduino
zapojenie 5 LED diód na Arduino

Vložte päť LED diód do nepájivého poľa tak, aby ich anódy (dlhšia nožička) smerovali rovnakým smerom. Pripojte každú katódu (kratšiu nožičku s plochou stranou) k vlastnému rezistoru a spojte vzdialený koniec všetkých piatich rezistorov so spoločnou zemniacou lištou. Potom veďte prepojovací vodič z každej anódy k pinu Arduina.

V tomto zapojení sú LED diódy priradené k pinom 3, 4, 5, 6 a 7 (vo videu v čase 31:29). Čísla pinov sú definované v hornej časti náčrtu, takže ak uprednostňujete iné usporiadanie, stačí zmeniť týchto päť riadkov.

Vysvetlenie kódu

Náčrt je zámerne jednoduchý, aby začiatočník dokázal sledovať každý riadok. Upraviť pre vlastné zapojenie treba len blok úplne na začiatku.

const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;
int offTime = 30;  // the time each LED waits in the OFF state
int onTime = 100;  // the time each LED is ON

Definície pinov. Päť riadkov const int priraďuje každú LED diódu k fyzickému pinu Arduina. Pretože sú deklarované ako const, hodnoty sa neskôr v programe nedajú zmeniť — je to bezpečnostný návyk, ktorý zabraňuje náhodnému priradeniu. Ak zapojíte LED diódy k iným pinom, zmeňte čísla tu a nič iné.

onTime a offTime. Tieto dve celé čísla sú jediné „behaviorálne" premenné v projekte a sú to tie, s ktorými budete chcieť experimentovať:

  • onTime — ako dlho (v milisekundách) zostane každá LED rozsvietená. Väčšie hodnoty spôsobujú, že každý krok pôsobí pomalšie a rozvážnejšie.
  • offTime — pauza po zhasnutí LED predtým, než sa rozsvieti ďalšia. Menšie hodnoty zrýchľujú pohyb svetla.

Vyskúšajte onTime = 200 a offTime = 200 pre rovnomerné stredne rýchle putovanie svetla, alebo onTime = 30 a offTime = 30 pre veľmi rýchly, takmer rozmazaný efekt (vo videu v čase 36:06).

Funkcia setup() sa spustí raz a jednoducho nastaví všetkých päť pinov do režimu OUTPUT. Funkcia loop() potom opakuje rovnaký štvor-krokový vzor pre každú LED: nastaví pin na HIGH, počká onTime, nastaví ho na LOW, počká offTime. Keď piata LED skončí, cyklus sa reštartuje od prvej, čím vzniká nekonečné putovanie.

Živý projekt a demonštrácia

S predvolenými hodnotami LED postupujú po rade uvoľneným tempom. Nahranie skice s onTime a offTime nastavenými na 200 ms vytvára rovnomerný, pravidelný pochod; zníženie oboch na 30 ms spôsobí, že svetlo preletí po rade takmer príliš rýchlo na to, aby sa dalo sledovať (vo videu v čase 36:21).

Dva užitočné experimenty, ktoré môžete vyskúšať, keď to funguje:

  • Nastavte čas svietenia kratší ako čas zhasnutia, aby vznikla zreteľná putujúca bodka.
  • Nastavte čas svietenia dlhší ako čas zhasnutia, aby vznikla jemná, prekrývajúca sa žiara.

Rovnaké zapojenie piatich LED sa znova použije v ďalšom projekte, kde tlačidlo posúva svetlo o jeden krok vpred. Táto konštrukcia je pokrytá v Lekcia 98-8: Putujúce svetlo s tlačidlom a LED s Arduinom.

Ak by ste namiesto tlačidla chceli riadiť rad z analógového vstupu, pozrite si Lekcia 98-9: Merač úrovne napätia LED pomocou Arduina alebo putujúce svetlo s potenciometrom.

Ako ísť ďalej

Keď základné putovanie funguje, prirodzeným ďalším krokom je nechať svetlo odrážať sa tam a späť namiesto skoku z poslednej LED na prvú. Je to čisto programátorské cvičenie — žiadny extra hardvér — a je to dobrý spôsob, ako si precvičiť cykly a polia. Tento projekt môžete tiež skombinovať s verziou s tlačidlom a vytvoriť manuálne posúvaný displej.

Súvisiace projekty z tohto videa

Kapitoly

  • [00:00] Prehľad desiatich LED projektov
  • [01:22] Úvod do kurzu Arduina krok za krokom
  • [02:29] Čo je LED a ako identifikovať jej piny
  • [03:49] Výpočet rezistora obmedzujúceho prúd
  • [30:47] Predstavenie projektu putujúceho svetla
  • [31:06] Schéma zapojenia pre päť LED
  • [32:52] Prehliadka kódu putujúceho svetla
  • [34:39] Demonštrácia a zmena časovacích hodnôt
  • [36:41] Posúvanie svetla tlačidlom (samostatný tutoriál)
  • [42:25] Napäťový pruh LED s potenciometrom (samostatný tutoriál)
  • [49:25] Arduino semafor (samostatný tutoriál)

Obrázky

wiring of 5 LED on Arduino
wiring of 5 LED on Arduino
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
5 LED na nepájivom poli s rezistorom pripojeným k Arduino UNO
5 LED na nepájivom poli s rezistorom pripojeným k Arduino UNO
939-Lessson 98-LED-7: Arduino code walking LED light
Jazyk: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Súbory📁

Knižnice Arduino (zip)

Používateľská príručka