Hľadať kód

Lekcia 98-5: Postupné stmievanie svetla po stlačení tlačidla pomocou Arduino

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.

LED with resistor on breadboard connected to Arduino with a push button
LED s rezistorom na nepájivom poli pripojená k Arduinu s tlačidlom

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

330_ohm_resistor
330_ohm_resistor

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

Arduino schematic for LED with a push button switch
Arduino schéma pre LED s tlačidlovým spínačom
Arduino wiring for LED with a push button switch
Arduino zapojenie pre LED s tlačidlovým spínačom

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

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

Obrázky

Arduino wiring for LED with a push button switch
Arduino wiring for LED with a push button switch
Arduino schematic for LED with a push button switch
Arduino schematic for LED with a push button switch
LED-5mm-green
LED-5mm-green
330_ohm_resistor
330_ohm_resistor
LED with resistor on breadboard connected to Arduino with a push button
LED with resistor on breadboard connected to Arduino with a push button
937-Lessson 98-LED-5: Arduino code to fade the LED when push button is pressed
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