Hľadať kód

Lekcia 98-8: Chôdza so svetlom pomocou tlačidla a LED diód s Arduinom

Lekcia 98-8: Chôdza so svetlom pomocou tlačidla a LED diód s Arduinom

Tento projekt vám ukáže, ako zostaviť „kráčajúce svetlo“, ktoré sa posunie o jeden krok vždy, keď stlačíte tlačidlo. Namiesto svetla, ktoré beží na vlastnom časovači, získate priamu, hmatovú kontrolu: každé stlačenie posunie rozsvietenú LED o jednu pozíciu dopredu a po poslednej LED sa vráti späť na prvú. Toto je jeden z najužitočnejších stavebných blokov pri učení sa s Arduinom, pretože vás naučí kombinovať digitálny vstup (tlačidlo) s rotujúcim stavovým automatom (ktorá LED práve svieti) — vzor, ktorý budete neustále opakovane používať.

5 leds on breadboard with push button shown connected to Arduino UNO
5 leds on breadboard with push button shown connected to Arduino UNO

Keď raz pochopíte tento vzor, tá istá logika poháňa obrovské množstvo reálnych projektov. Tu je niekoľko praktických nápadov, ktoré s ním môžete zostaviť:

  • Selektor ponuky na zariadení, kde každé stlačenie zvýrazní ďalšiu možnosť.
  • Sekvenčný indikátor krokov pre stroj alebo proces (krok 1, krok 2, krok 3...).
  • Zobrazenie skóre alebo úrovne, ktoré posúvate manuálne tlačidlom.
  • Indikátor „ďalší kanál“ alebo „ďalší režim“ pre ovládač osvetlenia.
  • Jednoduchý herný alebo kvízový bzučiak, kde si hráči striedavo rozsvecujú ďalšiu lampu.
  • Sekvencer relé alebo záťaže, kde každé stlačenie aktivuje ďalší výstup v poradí.

Kľúčovou výhodou oproti automatickému bežiacemu svetlu je kontrola: nič sa nedeje, kým nestlačíte, takže svetlo sa posunie len vtedy, keď sa vy rozhodnete. Video tiež poznamenáva, že tá istá myšlienka prepínania a sekvencovania môže poháňať relé na spínanie AC svetla alebo ovládanie motora, nielen LED (vo videu v 19:52).

Hardvér a komponenty

Zoznam dielov je krátky a lacný:

  • Doska Arduino (Uno, Nano, Mega alebo akákoľvek kompatibilná doska).
  • Päť LED — 5 mm alebo 3 mm, akékoľvek farby sa vám páčia.
  • Päť rezistorov obmedzujúcich prúd, 200 Ω až 1000 Ω (video používa 1 kΩ).
  • Jeden tlačidlový spínač (ideálny je momentový taktilný spínač).
  • Nepájivá doska a niekoľko prepojovacích vodičov DuPont.

Rýchla poznámka k LED: katóda je kratšia nožička a strana s plochým okrajom, zatiaľ čo anóda je dlhšia nožička (vo videu v 03:13). Hodnota rezistora nie je kritická — vyšší rezistor jednoducho stlmí LED, takže čokoľvek od približne 300 Ω do 1000 Ω bude fungovať dobre (vo videu v 05:33).

Sprievodca zapojením

Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
wiring for Arduino walking light LEDs with push button
wiring for Arduino walking light LEDs with push button

Zapojenie je v podstate rovnaké ako pri štandardnom päť-LED kráčajúcom svetle, s pridaným jedným tlačidlom. Anóda každej LED sa pripája k vlastnému pinu Arduina a katóda každej LED sa pripája cez vlastný rezistor k spoločnej zemniacej lište na nepájivej doske. V tejto zostave sú LED pripojené k pinom 3, 4, 5, 6 a 7 (vo videu v 31:37). Tlačidlo je umiestnené na nepájivej doske jednou nožičkou k zemi a druhou nožičkou k pinu 2 — rovnaký pin, ktorý kód používa pre tlačidlo (vo videu v 37:04).

Pretože kód povoľuje interný pull-up rezistor Arduina, na tlačidle nie je potrebný žiadny externý rezistor. Keď tlačidlo nie je stlačené, pin číta HIGH, a keď ho stlačíte, pin sa stiahne k zemi a číta LOW (vo videu v 14:02).

Vysvetlenie kódu

Celý program je k dispozícii pod týmto článkom. Tu sa zameriame na časti, ktoré budete skutočne chcieť zmeniť.

V hornej časti náčrtu je každá LED a tlačidlo priradené k pinu. Tu prispôsobíte zostavu tak, aby zodpovedala vášmu vlastnému zapojeniu:

const int pushButtonPin = 2; // push button pin
const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;

int LED_ON = LED1; // which LED is currently lit

Premenná LED_ON je srdcom projektu. Pamätá si, ktorá LED práve svieti, pričom začína na LED1. Zakaždým, keď stlačíte tlačidlo, kód posunie LED_ON na ďalšiu LED v sekvencii a vypne predchádzajúcu, takže vždy svieti len jedna LED.

Po každom stlačení je tiež malé oneskorenie:

delay(200); // debounce / give the user time between presses

Táto 200 milisekundová pauza zabraňuje tomu, aby sa jedno fyzické stlačenie zaregistrovalo ako viacero stlačení. Ak sa vám trasie prst alebo sa tlačidlo zdá príliš citlivé, zvýšte toto číslo; ak chcete rýchlejšiu odozvu, znížte ho. Majte na pamäti, že príliš nízke nastavenie môže spôsobiť, že svetlo neočakávane preskočí dopredu (vo videu v 41:20).

Hlavná logika sa nachádza v loop(). Číta tlačidlo a iba keď je tlačidlo stlačené (čítanie LOW), posunie svetlo. Sekvencia používa reťazec kontrol if / else if na prechod z LED1 na LED2 na LED3 atď., pričom sa po poslednej vráti späť na LED1. Ak chcete zmeniť smer alebo poradie LED diód, toto je blok, ktorý treba upraviť — jednoducho priraďte, ktorý pin nasleduje po ktorom.

Živý projekt a demonštrácia

Po nahratí kódu stlačenie tlačidla rozsvieti prvú LED diódu; uvoľnenie ju nechá svietiť. Ďalšie stlačenie presunie svetlo na druhú LED diódu, potom na tretiu, štvrtú a piatu a nasledujúce stlačenie sa vráti na prvú — nepretržité otáčanie (vo videu v čase 40:22).

Príjemným vedľajším efektom oneskorenia 200 milisekúnd je, že ak tlačidlo podržíte stlačené, svetlo sa samo posúva každých 200 milisekúnd, čím sa projekt efektívne zmení na automatické kráčajúce svetlo, kým je tlačidlo podržané (vo videu v čase 42:07). Uvoľnite tlačidlo a zastaví sa na aktuálnej LED dióde. To vám poskytuje manuálne krokovanie aj beh bez rúk z jedného tlačidla.

Ak by ste radšej chceli, aby svetlo bežalo automaticky úplne bez tlačidla, to je samostatná konštrukcia. Automatická verzia je pokrytá v Lekcia 98-7: Kráčajúce svetlo pomocou Arduino a 5 LED diód.

Súvisiace projekty z tohto videa

Kapitoly

  • [00:00] Prehľad 10 Arduino LED projektov
  • [01:22] Úvod do kurzu Arduino krok za krokom
  • [02:29] Pochopenie LED diód: symboly, polarita a piny
  • [03:49] Výpočet rezistora obmedzujúceho prúd LED
  • [30:47] Kráčajúce svetlo s 5 LED diódami: zapojenie a princíp
  • [32:52] Kód kráčajúceho svetla: piny, časovanie a slučka
  • [36:41] Posúvanie svetla pomocou tlačidla
  • [37:44] Kráčajúce svetlo s tlačidlom: prehľad kódu
  • [40:22] Demonštrácia a úprava oneskorenia stlačenia
  • [57:16] Záverečné poznámky a ukončenie kurzu

Obrázky

wiring for Arduino walking light LEDs with push button
wiring for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs with push button
Schematic for Arduino walking light LEDs
Schematic for Arduino walking light LEDs
5 LED na nepájivom poli s tlačidlom pripojeným k Arduino UNO
5 LED na nepájivom poli s tlačidlom pripojeným k Arduino UNO
940-Lessson 98-LED-8: Arduino code walking LED light with push button
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