Lekcia 98-4: Stmievanie LED svetla pomocou Arduino: Ovládanie jasu
LED diódy sú všade — indikátory, displeje, dekoratívne osvetlenie — ale väčšina začiatočníkov skončí pri jednoduchom zapnutí a vypnutí. Tento projekt robí ďalší krok: plynulé rozjasňovanie a stmievanie LED diódy pomocou vstavanej funkcie PWM (pulzná šírková modulácia) Arduina. Namiesto ostrého blikania získate postupný nárast a pokles jasu, ktorý napodobňuje prirodzené stmievanie, dýchanie a analógové ovládanie z čisto digitálneho pinu. Je to jeden z najuspokojivejších prvých projektov, pretože výsledok vidíte okamžite, a tá istá technika je základom regulácie rýchlosti motorov, hlasitosti zvuku a stmievania podsvietenia v reálnych produktoch.
Keď pochopíte stmievanie, môžete ho aplikovať na širokú škálu praktických konštrukcií:
- Vytvorenie indikátora stavu „dýchania" na zariadení, ktorý jemne pulzuje namiesto rušivého blikania
- Automatické stmievanie LED nočného svetla na základe okolitého svetla alebo dennej doby
- Ovládanie jasu podsvietenia na LCD alebo OLED displeji
- Vytváranie náladového osvetlenia alebo dekoratívnych lámp s plynulými prechodmi medzi úrovňami jasu
- Simulácia budíka s pomalým východom slnka, ktorý sa postupne rozjasňuje, aby vás prirodzene zobudil
- Pridanie regulácie rýchlosti k malým jednosmerným motorom alebo ventilátorom (platí rovnaký princíp PWM)
Tento tutoriál je súčasťou kurzu Robojax Arduino Step-by-Step a konkrétne pokrýva Projekt 4 z 10: Stmievanie LED svetla pomocou Arduina. Celý program je k dispozícii na stiahnutie pod článkom.
Hardvér a komponenty
Zoznam dielov pre tento projekt je minimálny — ak ste už niekedy pracovali s Arduinom, pravdepodobne už máte všetko potrebné:
- 1× Arduino doska (Uno, Nano, Mega alebo akákoľvek kompatibilná doska)
- 1× LED dióda (5mm alebo 3mm, akákoľvek farba)
- 1× Rezistor (200Ω až 1000Ω — rozsah 300Ω až 1kΩ funguje dobre)
- Nepájivé pole a DuPont prepojovacie vodiče
- USB kábel na programovanie a napájanie
Jedna dôležitá poznámka k LED dióde: dlhšia nožička je anóda (kladná) a kratšia nožička — alebo strana s plochým okrajom na plastovom puzdre — je katóda (záporná). Ak to zapojíte opačne, LED dióda sa jednoducho nerozsvieti, takže pred zapnutím napájania to dvakrát skontrolujte.
Pokiaľ ide o hodnotu rezistora, prepis prechádza výpočtom na (vo videu v 03:49): typická LED dióda má úbytok napätia približne 2V a potrebuje približne 10mA prúdu. Pri napájaní 5V musí zvyšné 3V klesnúť na rezistore, čo dáva R = V/I = 3V / 0,01A = 300Ω. V praxi bude fungovať čokoľvek od 300Ω do 1000Ω — vyššie hodnoty jednoducho produkujú slabšiu LED diódu. Pri stmievaní je to vlastne v poriadku, keďže jas aj tak meníte.
Sprievodca zapojením
Zapojenie je asi také jednoduché, ako to len môže byť. Anóda LED diódy sa pripojí cez rezistor na pin Arduina podporujúci PWM — v tomto projekte pin 3. Katóda sa pripojí na uzemnenie.
Prečo konkrétne pin 3? Pretože nie všetky piny Arduina podporujú PWM. Na väčšine dosiek Arduino sú piny podporujúce PWM označené symbolom vlnovky (~) — zvyčajne piny 3, 5, 6, 9, 10 a 11 na Uno. Ak použijete pin bez PWM, analogWrite() nebude produkovať premenlivý výstup; LED dióda bude len zapnutá alebo vypnutá.
Zapojte obvod nasledovne:
- Vložte LED diódu do nepájivého poľa, pričom si všimnite, ktorá nožička je anóda (dlhšia) a ktorá je katóda (kratšia/plochá strana).
- Pripojte anódu LED diódy k pinu 3 Arduina cez rezistor.
- Pripojte katódu LED diódy k pinu GND Arduina.
- Pripojte Arduino k počítaču cez USB.
Vysvetlenie kódu
Náčrt pre tento projekt vychádza z klasického príkladu Arduina „Fade" s niekoľkými úpravami. Namiesto vysvetľovania každého riadku sa zamerajme na časti, ktoré budete chcieť upraviť pre svoje vlastné experimenty.
Používateľom konfigurovateľné premenné
Na začiatku kódu ovládajú celé správanie tri premenné:
int led = 3; // the PWM pin the LED is attached to
int brightness = 0; // how bright the LED is
int fadeAmount = 3; // how many points to fade the LED byled— Toto definuje, ku ktorému pinu je pripojená LED. Predvolená hodnota je pin 3, ale môžete ho zmeniť na akýkoľvek pin podporujúci PWM (označený znakom ~ na vašej doske). Ak presuniete LED na iný pin, aktualizujte túto hodnotu, aby zodpovedala.brightness— Toto je aktuálna úroveň jasu, v rozsahu od 0 (vypnuté) do 255 (plný jas). Kód začína na 0, ale môžete začať kdekoľvek v tomto rozsahu.fadeAmount— Toto je najzaujímavejšia hodnota na experimentovanie. Určuje, koľko krokov jasu sa vykoná v každom cykle. Malá hodnota ako 3 vytvára pomalé, postupné stmievanie. Väčšia hodnota ako 20 spôsobí, že LED rýchlo stmavne a rozsvieti sa. Prepis to demonštruje na (vo videu v 22:37) — zmena z 5 na 20 dramaticky zrýchli efekt.
Ako funguje stmievanie
Jadro stmievania sa nachádza v dvoch riadkoch vnútri loop():
analogWrite(led, brightness);
brightness = brightness + fadeAmount;
Pri každom prechode cyklom sa aktuálna hodnota jasu zapíše na LED pomocou analogWrite(), potom sa jas zvýši o fadeAmount. Funkcia analogWrite() používa PWM na simuláciu analógového napätia — rýchlo prepína pin zapnutý a vypnutý a pomer času zapnutia k času vypnutia určuje vnímaný jas.
Keď jas dosiahne buď 0 alebo 255, kód obráti smer zmenou znamienka fadeAmount:
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
To je to, čo spôsobuje, že LED sa rozsvieti, potom stmavne a potom sa znova rozsvieti — nepretržitý cyklus dýchania. delay(30) na konci cyklu riadi celkovú rýchlosť animácie. Kratšie oneskorenie zrýchli stmievanie; dlhšie oneskorenie ho spomalí.
Experimentovanie s hodnotami
Dve premenné vám dávajú najväčšiu kontrolu nad vizuálnym efektom:
- Zvýšte
fadeAmountpre rýchlejšie, dramatickejšie stmievanie. Skúste 10 alebo 20. - Znížte
fadeAmountpre pomalý, jemný efekt dýchania. Skúste 1 alebo 2. - Upravte hodnotu
delay()na zmenu tempa. Menšie oneskorenia zrýchlia celý cyklus; väčšie oneskorenia ho predĺžia.
Kombinácia malého fadeAmount s krátkym oneskorením vytvára extrémne plynulé, takmer organické stmievanie — skvelé pre ambientné osvetlenie. Veľký fadeAmount s krátkym oneskorením vytvára rýchly pulzujúci efekt.
Živá ukážka projektu
Po nahratí kódu uvidíte, ako sa LED pomaly rozjasňuje z vypnutého stavu na plný jas, potom sa stlmí späť, a to sa opakuje donekonečna. Prepis ukazuje predvolené správanie na (vo videu v 22:25) — plynulé stmievanie strednej rýchlosti.
Keď sa fadeAmount zmení na 20, LED sa rozsvieti a zhasne veľmi rýchlo — takmer ako blikanie. Pri hodnote 3 stmievanie trvá výrazne dlhšie, čo vytvára uvoľnený, postupný prechod. To je jasne demonštrované vo videu na (vo videu v 23:02).
Krása tohto projektu spočíva v tom, že môžete okamžite vidieť efekt zmien vo vašom kóde — nie sú potrebné žiadne zmeny v zapojení, stačí upraviť premenné a znova nahrať. Táto tesná spätná väzba z neho robí vynikajúci spôsob, ako si vybudovať intuíciu o tom, ako PWM a časovanie vzájomne pôsobia.
Ak chcete ísť ďalej a spustiť stmievanie tlačidlom namiesto nepretržitého behu, to je pokryté v samostatnom návode — pozrite si sekciu súvisiacich projektov nižšie.
Súvisiace projekty z tohto videa
- Lekcia 98-1: Ako zapnúť a vypnúť LED pomocou Arduina
- Lekcia 98-2: Ako zapnúť a vypnúť LED pomocou tlačidla s Arduinom
- Lekcia 98-3: Ako zapnúť/vypnúť prepínaciu LED pomocou tlačidla s Arduinom
- Lekcia 98-5: Stmievanie svetla pri stlačení tlačidla pomocou Arduina
- Lekcia 98-6: Hra s LED hojdačkou s Arduinom
- Lekcia 98-7: Kráčajúce svetlo pomocou Arduina a 5 LED
- Lekcia 98-8: Kráčajúce svetlo s tlačidlom a LED s Arduinom
- Lekcia 98-9: Merač úrovne napätia LED pomocou Arduina alebo kráčajúce svetlo s potenciometrom
- Lekcia 98-10: Arduino semafor
Kapitoly
- [00:00] Prehľad 10 Arduino LED projektov
- [01:22] Úvod do kurzu a potrebné komponenty
- [02:29] Pochopenie LED: symboly, polarita a typy
- [03:49] Výpočet hodnoty rezistora pre LED pomocou Ohmovho zákona
- [05:53] Projekt 1: Zapnutie a vypnutie LED
- [12:43] Projekt 2: Ovládanie LED tlačidlom
- [17:13] Projekt 3: Prepínanie LED tlačidlom
- [20:12] Projekt 4: Stmievanie LED — prehľad kódu
- [22:25] Ukážka stmievania a úprava rýchlosti stmievania
- [23:20] Projekt 5: Stmievanie LED spustené tlačidlom
- [27:32] Projekt 6: Efekt LED hojdačky
- [30:47] Projekt 7: Kráčajúce svetlo s 5 LED
- [36:41] Projekt 8: Kráčajúce svetlo ovládané tlačidlom
- [42:25] Projekt 9: Merač úrovne napätia LED s potenciometrom
- [49:25] Projekt 10: Arduino semafor
This code has not been parsed yet. Please return to the admin panel to parse it.
Veci, ktoré by ste mohli potrebovať
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
Zdroje a referencie
-
DokumentáciaDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
Externé
-
Externé
-
Externé
Súbory📁
Knižnice Arduino (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB
Používateľská príručka
-
Montážny manuál SunFounder 3-v-1 Arduino Smart CarTento dokument ukazuje krok za krokom montáž SunFounder 3-v-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB