Lekcia 98-5: Postupné stmievanie svetla po stlačení tlačidla pomocou Arduino
V tejto lekcii zostavíte svetlo, ktoré sa na povel stlmí: stlačte tlačidlo a LED začne svietiť na plný jas, potom plynulo stlmí až do vypnutia. Toto je jeden z najužitočnejších vzorov pre začiatočníkov v Arduino, pretože kombinuje digitálny vstup (tlačidlo) s PWM analógovým výstupom (jas LED) a naučí vás ovládať rýchlosť a plynulosť zmeny namiesto jednoduchého zapínania a vypínania.
Stmievanie na povel sa objavuje všade v reálnych produktoch. Tu je niekoľko praktických spôsobov, ako môžete využiť to, čo sa tu naučíte:
- Indikátory jemného vypnutia — namiesto toho, aby sa lampa náhle vypnula, pri stlačení tlačidla sa jemne stlmí, čo vyzerá oveľa elegantnejšie na spotrebičoch a 3D tlačených krytoch.
- Režim spánku / pohotovostný režim — stlačte tlačidlo a jasná stavová LED sa stlmí do tmy, aby vás v noci nerušila, pričom obvod zostáva napájaný.
- Osvetlenie scény alebo modelu s efektom "fade to black" — jedno tlačidlo spustí plynulé stmievanie LED pásu alebo panelu namiesto náhleho zhasnutia.
- Spätná väzba šetriaca batériu — krátke stlačenie tlačidla vám poskytne jasný potvrdzujúci záblesk, ktorý postupne zmizne, takže LED svieti na plný výkon len krátko.
- Interaktívne umenie a rekvizity — efekt "vydýchnutia" spustený dotykom, ideálny pre cosplay, diorámy alebo múzejné exponáty.
Základná myšlienka je jednoduchá: tlačidlo povie Arduinu "začni teraz stmievať" a Arduino znižuje jas LED z 255 (plný) na 0 (vypnuté) v malých krokoch. Pretože kroky sú malé a dejú sa rýchlo, vaše oko vidí plynulé stmievanie namiesto skoku.
Ak ste ešte nikdy nestmievali LED, základné ovládanie jasu je pokryté v Lekcii 98-4: Stmievanie LED svetla pomocou Arduino: Ovládanie jasu. Táto lekcia priamo nadväzuje na tento základ pridaním tlačidla ako spúšťača.
Hardvér a komponenty
Toto je veľmi lacná konštrukcia — všetko tu je štandardný materiál zo štartovacej sady:
- Doska Arduino (Uno, Nano, Mega alebo akákoľvek kompatibilná doska)
- Jedna LED (5 mm alebo 3 mm, akákoľvek farba)
- Jeden tlačidlový spínač (momentový, 4-pinový taktilný typ funguje dobre)
- Jeden rezistor pre LED — kdekoľvek od 200 Ω do 1000 Ω (klasický 220 Ω alebo 330 Ω je perfektný)
- Nepájivé pole a DuPont prepojovacie vodiče
- USB kábel na programovanie (a batéria alebo 5 V adaptér, ak chcete, aby to bežalo bez kábla)
Rýchla poznámka k rezistoru LED: LED potrebuje približne 2 V na sebe a asi 10 mA prúdu. Pri 5 V napájaní musí rezistor znížiť zvyšné 3 V, takže Ohmov zákon dáva asi 300 Ω. Čokoľvek od 300 Ω do 1000 Ω bude fungovať — vyššie hodnoty len stlmia LED. Použitie rezistora nie je voliteľné; bez neho bude LED odoberať príliš veľa prúdu a vyhorí.
Sprievodca zapojením
Zapojenie je zámerne minimálne. Anóda LED (dlhšia nožička) sa pripája cez rezistor k digitálnemu pinu 3 a jej katóda (kratšia nožička, s plochou stranou na puzdre) ide na zem. Tlačidlo sa pripája medzi digitálny pin 2 a zem — nie je potrebný žiadny externý pull-up rezistor, pretože kód aktivuje interný pull-up Arduino.
Venujte pozornosť polarite LED: plochá strana plastového tela a kratšia nožička označujú katódu (negatívnu). Ak ju vložíte opačne, LED jednoducho nebude svietiť — žiadne poškodenie nenastane, stačí ju otočiť.
Pre tlačidlo, ak používate 4-pinový taktilný spínač, pamätajte, že piny sú vnútorne spárované: dva zo štyroch pinov sú vždy spojené. Použite multimeter v režime kontinuity na nájdenie páru, ktorý pípne pri stlačení, potom použite jeden pin z každej strany. Jedna strana ide na pin 2, druhá na zem.
Vysvetlenie kódu
Skica je krátka a takmer všetko, čo by ste mohli chcieť zmeniť, sa nachádza v niekoľkých riadkoch na začiatku. Tu sú používateľsky konfigurovateľné časti:
const int pushButtonPin = 2;//pin, ku ktorému je pripojený spínač tlačidla
const int LEDPin = 3;//pin, ku ktorému je pripojená LED
const int fadeAmount = 10; // o koľko bodov stlmiť LED
const int fadeSpeed = 5;//čas stmievania v milisekundách. čím menšia hodnota, tým rýchlejšie stmievanie
pushButtonPin a LEDPin jednoducho hovoria Arduinu, na ktoré piny ste pripojili súčiastky. Ak presuniete tlačidlo na pin 4 alebo LED na pin 9 (pin podporujúci PWM), stačí zmeniť tieto dve čísla tak, aby zodpovedali vášmu zapojeniu. Všimnite si, že pin LED musí podporovať PWM — na Uno to znamená piny 3, 5, 6, 9, 10 alebo 11 — pretože stmievanie vyžaduje analogWrite().
fadeAmount určuje, aký veľký je každý krok jasu. Jas sa pohybuje od 0 do 255, takže fadeAmount 10 znamená, že LED stmiera približne v 25 krokoch. Väčšie číslo robí stmievanie hrubším a rýchlejším; menšie číslo ho robí plynulejším a pomalším.
fadeSpeed je oneskorenie v milisekundách medzi jednotlivými krokmi. Toto je jediný najdôležitejší parameter pre to, ako efekt pôsobí. Hodnota 5 ms dáva rýchle, svižné stmievanie; hodnota 30 ms alebo viac dáva pomalé, luxusné stmievanie. V kombinácii s fadeAmount vám tieto dve hodnoty umožňujú vyladiť stmievanie presne na charakter, aký chcete.
Existuje aj interná premenná, o ktorej stojí za to vedieť:
int brightness = 255; // aký jasný je LED
int pushButtonStatus = 0; // hodnota stlačenia z pinu 2
brightness začína na 255, čo znamená, že LED začína na plnom jase zakaždým, keď stlačíte tlačidlo. Ak chcete, aby stmievanie začalo z tmavšieho bodu — povedzme z polovičného jasu — zmeňte to na 128.
Samotná logika funguje takto: slučka číta tlačidlo. Ak je stlačené (LOW, kvôli internému pull-up), spustí sa slučka while, pokiaľ je jas väčší ako nula. V tejto slučke Arduino zapíše aktuálny jas na LED, odpočíta fadeAmount, počká fadeSpeed milisekúnd a zopakuje to. Keď tlačidlo nie je stlačené, na LED sa jednoducho zapíše 0 a zostane vypnutá.
Jeden dôležitý detail: interný pull-up znamená, že pin číta HIGH, keď tlačidlo nie je stlačené, a LOW, keď je stlačené. Preto kód kontroluje LOW, aby detekoval stlačenie. Ak by ste niekedy prešli na externý pull-down rezistor, museli by ste túto podmienku zmeniť na HIGH.
Živý projekt a demonštrácia
Po nahratí je správanie okamžité a uspokojujúce. Stlačte tlačidlo a LED skočí na plný jas, potom viditeľne stmiera až do zhasnutia počas obdobia, ktoré ovládate. Uvoľnite tlačidlo a LED zhasne; stlačte znova a stmievanie sa reštartuje z plného jasu.
Vo videu je stmievanie demonštrované pri niekoľkých nastaveniach, aby ste mohli počuť a vidieť rozdiel. Pri fadeAmount = 20 je stmievanie rýchle a skokové — dosiahne nulu v niekoľkých viditeľných krokoch. Zníženie na fadeAmount = 10 ho výrazne vyhladí a prechod na fadeAmount = 3 spôsobí, že stmievanie trvá znateľne dlhšie a vyzerá takmer plynule. Hodnota fadeSpeed má rovnako dramatický efekt: nastavenie na 1 ms robí stmievanie takmer okamžitým, zatiaľ čo väčšie hodnoty ho naťahujú.
Skúste tento experiment: nastavte fadeAmount = 5 a fadeSpeed = 30. Získate pomalé, jemné stmievanie, ktoré vyzerá ako svetlo usínajúce. Potom nastavte fadeAmount = 50 a fadeSpeed = 1 pre tvrdé, rýchle zhasnutie. Ani jedno nie je „nesprávne" — ide výlučne o náladu, ktorú chcete.
Prepinacie správanie toho istého tlačidla je pokryté samostatne v Lekcii 98-3: Ako zapnúť/vypnúť prepínaciu LED pomocou tlačidla s Arduinom a jednoduchšia verzia „stlač a svieti" je v Lekcii 98-2: Ako zapnúť a vypnúť LED pomocou tlačidla s Arduinom.
Keďže stmievanie je spustené momentovým kontaktom, tento istý obvod je prirodzene vhodný na ovládanie relé alebo MOSFETu namiesto LED — mohli by ste stmievať 12 V lampu, soft-start motora alebo zahrievanie vykurovacieho telesa. Tlačidlo je len spúšťač; čo stmievate, je na vás.
Súvisiace projekty z tohto videa
- Lekcia 98-1: Ako zapnúť a vypnúť LED s Arduinom
- 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-4: Stmievanie LED svetla pomocou Arduina: Ovládanie jasu
- Lekcia 98-6: Hra Seesaw LED 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 LED projektov
- [01:00] Úvod do kurzu Arduino krok za krokom
- [02:29] Základy LED: symboly, polarita a prúd
- [03:49] Výpočet odporu LED pomocou Ohmovho zákona
- [05:53] Projekt 1: Zapnutie a vypnutie LED
- [12:43] Projekt 2: LED s tlačidlom
- [17:13] Projekt 3: Prepínanie LED tlačidlom
- [20:12] Projekt 4: Postupné stmievanie LED
- [23:20] Projekt 5: Postupné stmievanie LED s tlačidlom
- [27:32] Projekt 6: Hojdacia LED
- [30:47] Projekt 7: Bežiaci svetelný efekt
- [36:41] Projekt 8: Bežiaci svetelný efekt s tlačidlom
- [42:25] Projekt 9: LED indikátor úrovne napätia
- [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