Lecția 98-5: Estompează lumina când un buton este apăsat folosind Arduino
În această lecție vei construi o lumină care se estompează la comandă: apeși un buton și LED-ul pornește la luminozitate maximă, apoi scade lin până se stinge. Acesta este unul dintre cele mai utile modele pentru începători în Arduino, deoarece combină o intrare digitală (butonul) cu o ieșire analogică PWM (luminozitatea LED-ului) și te învață cum să controlezi ritmul și fluiditatea unei schimbări, în loc să doar aprinzi și să stingi ceva.
Estomparea la comandă apare peste tot în produsele reale. Iată câteva moduri practice în care poți folosi ceea ce înveți aici:
- Lumini indicatoare cu stingere lentă — în loc ca o lampă să se stingă brusc, aceasta scade lin când apeși un buton, ceea ce arată mult mai elegant pe aparate electrocasnice și carcase imprimate 3D.
- Modul somn / standby — apeși un buton și un LED de stare luminos se estompează până la negru, ca să nu te deranjeze noaptea, în timp ce circuitul rămâne alimentat.
- Iluminare de scenă sau pentru machete cu „fade to black” — un singur buton declanșează o estompare lină a unei benzi sau a unui panou LED, în loc de o întrerupere bruscă.
- Feedback pentru economisirea bateriei — o apăsare scurtă a butonului îți oferă un flash luminos de confirmare care se estompează, astfel încât LED-ul este aprins complet doar pentru scurt timp.
- Artă interactivă și recuzită — un efect de „expirație” declanșat prin atingere, ideal pentru cosplay, diorame sau expoziții muzeale.
Ideea de bază este simplă: butonul îi spune Arduino-ului „începe estomparea acum”, iar Arduino-ul scade luminozitatea LED-ului de la 255 (maxim) la 0 (stins) în pași mici. Deoarece pașii sunt mici și se produc rapid, ochiul tău vede o estompare lină, nu un salt.
Dacă nu ai estompat niciodată un LED până acum, controlul de bază al luminozității este acoperit în Lecția 98-4: Estomparea unui LED folosind Arduino: Controlul luminozității. Această lecție se construiește direct pe acea fundație, adăugând un buton ca declanșator.
Hardware și componente
Acesta este un proiect foarte ieftin — tot ce este aici face parte din materialul standard al unui kit de începători:
- Placă Arduino (Uno, Nano, Mega sau orice placă compatibilă)
- Un LED (de 5 mm sau 3 mm, orice culoare)
- Un întrerupător cu buton (tip momentan, tactil cu 4 pini funcționează bine)
- Un rezistor pentru LED — oriunde între 200 Ω și 1000 Ω (clasicul 220 Ω sau 330 Ω este perfect)
- Breadboard și fire jumper DuPont
- Cablu USB pentru programare (și o baterie sau un adaptor de 5 V dacă vrei să funcționeze fără cablu)
O notă rapidă despre rezistorul LED-ului: un LED are nevoie de aproximativ 2 V la bornele sale și de aproximativ 10 mA de curent. Cu o alimentare de 5 V, rezistorul trebuie să cadă restul de 3 V, astfel încât legea lui Ohm dă aproximativ 300 Ω. Orice valoare de la 300 Ω până la 1000 Ω va funcționa — valorile mai mari doar fac LED-ul mai slab. Folosirea unui rezistor nu este opțională; fără el, LED-ul va consuma mult prea mult curent și se va arde.
Ghid de cablare
Cablarea este intenționat minimă. Anodul LED-ului (piciorul mai lung) se conectează prin rezistor la pinul digital 3, iar catodul său (piciorul mai scurt, cu partea plată pe capsulă) merge la masă. Butonul se conectează între pinul digital 2 și masă — nu este nevoie de un rezistor pull-up extern, deoarece codul activează pull-up-ul intern al Arduino-ului.
Acordă atenție polarității LED-ului: partea plată a corpului din plastic și piciorul mai scurt marchează catodul (negativ). Dacă îl introduci invers, LED-ul pur și simplu nu se va aprinde — nu se produce nicio deteriorare, doar întoarce-l.
Pentru buton, dacă folosești un întrerupător tactil cu 4 pini, reține că pinii sunt împerecheați intern: doi dintre cei patru pini sunt întotdeauna conectați împreună. Folosește un multimetru în modul de continuitate pentru a găsi o pereche care emite un bip când este apăsată, apoi folosește un pin din fiecare parte. O parte merge la pinul 2, cealaltă la masă.
Explicația codului
Sketch-ul este scurt, și aproape tot ce ai putea dori să modifici se află într-o mână de linii în partea de sus. Iată părțile configurabile de către utilizator:
const int pushButtonPin = 2;//pinul la care este conectat comutatorul butonului
const int LEDPin = 3;//pinul la care este conectat LED-ul
const int fadeAmount = 10; // cu câte puncte să se estompeze LED-ul
const int fadeSpeed = 5;//timpul de estompare în milisecunde. cu cât valoarea este mai mică, cu atât estomparea este mai rapidă
pushButtonPin și LEDPin pur și simplu îi spun Arduino-ului la ce pini ai conectat componentele. Dacă muți butonul la pinul 4 sau LED-ul la pinul 9 (un pin compatibil cu PWM), trebuie doar să schimbi aceste două numere pentru a corespunde cablajului tău. Reține că pinul LED-ului trebuie să suporte PWM — pe un Uno aceasta înseamnă pinii 3, 5, 6, 9, 10 sau 11 — deoarece estomparea necesită analogWrite().
fadeAmount controlează cât de mare este fiecare pas de luminozitate. Luminozitatea variază de la 0 la 255, deci o valoare fadeAmount de 10 înseamnă că LED-ul se estompează în aproximativ 25 de pași. Un număr mai mare face estomparea mai grosieră și mai rapidă; un număr mai mic o face mai lină și mai lentă.
fadeSpeed este întârzierea în milisecunde între fiecare pas. Acesta este cel mai important parametru pentru modul în care se simte efectul. O valoare de 5 ms oferă o estompare rapidă și energică; o valoare de 30 ms sau mai mult oferă o estompare lentă și luxoasă. Combinate cu fadeAmount, aceste două valori îți permit să reglezi estomparea exact la caracterul dorit.
Există și o variabilă internă despre care merită să știi:
int brightness = 255; // cât de luminos este LED-ul
int pushButtonStatus = 0; // valoarea citită de la pinul 2
brightness pornește de la 255, ceea ce înseamnă că LED-ul începe la luminozitate maximă de fiecare dată când apeși butonul. Dacă vrei ca estomparea să pornească de la un punct mai slab — să zicem, jumătate de luminozitate — schimbă această valoare la 128.
Logica în sine funcționează astfel: bucla citește butonul. Dacă este apăsat (LOW, din cauza pull-up-ului intern), o buclă while rulează atât timp cât brightness este peste zero. În interiorul acelei bucle, Arduino scrie luminozitatea curentă către LED, scade fadeAmount, așteaptă fadeSpeed milisecunde și repetă. Când butonul nu este apăsat, LED-ul este pur și simplu scris la 0 și rămâne stins.
Un detaliu important: pull-up-ul intern înseamnă că pinul citește HIGH când butonul nu este apăsat și LOW când este apăsat. De aceea codul verifică LOW pentru a detecta o apăsare. Dacă vreodată treci la un rezistor pull-down extern, ar trebui să schimbi acea comparație la HIGH.
Proiect live și demonstrație
Odată încărcat, comportamentul este imediat și satisfăcător. Apasă butonul și LED-ul sare la luminozitate maximă, apoi se estompează vizibil până la nimic pe o perioadă pe care o controlezi. Eliberează butonul și LED-ul se stinge; apasă din nou și estomparea repornește de la luminozitate maximă.
În videoclip, estomparea este demonstrată la mai multe setări, astfel încât să poți auzi și vedea diferența. Cu fadeAmount = 20 estomparea este rapidă și sacadată — ajunge la zero în câțiva pași vizibili. Trecerea la fadeAmount = 10 o netezește considerabil, iar fadeAmount = 3 face estomparea să dureze vizibil mai mult și să pară aproape continuă. Valoarea fadeSpeed are un efect la fel de dramatic: setarea la 1 ms face estomparea aproape instantanee, în timp ce valori mai mari o întind.
Încearcă acest experiment: setează fadeAmount = 5 și fadeSpeed = 30. Vei obține o estompare lentă și blândă care arată ca o lumină care adoarme. Apoi setează fadeAmount = 50 și fadeSpeed = 1 pentru o tăiere bruscă și rapidă. Niciuna nu este „greșită" — totul ține de atmosfera pe care o dorești.
Comportamentul de comutare al aceluiași buton este tratat separat în Lecția 98-3: Cum să aprinzi/stingi un LED toggle folosind un buton cu Arduino, iar versiunea mai simplă apasă-pentru-a-aprinde este în Lecția 98-2: Cum să aprinzi și să stingi un LED folosind un buton cu Arduino.
Deoarece estomparea este declanșată de un contact momentan, același circuit este potrivit în mod natural pentru a comanda un releu sau un MOSFET în locul unui LED — ai putea estompa o lampă de 12 V, pornirea lentă a unui motor sau încălzirea unui element de încălzire. Butonul este doar declanșatorul; ceea ce estompezi depinde de tine.
Proiecte similare din acest videoclip
- Lecția 98-1: Cum să aprinzi și să stingi un LED cu Arduino
- Lecția 98-2: Cum să aprinzi și să stingi un LED folosind un buton cu Arduino
- Lecția 98-3: Cum să aprinzi/stingi un LED toggle folosind un buton cu Arduino
- Lecția 98-4: Estomparea unui LED folosind Arduino: Controlul luminozității
- Lecția 98-6: Joc LED balansoar cu Arduino
- Lecția 98-7: Lumină călătoare folosind Arduino și 5 LED-uri
- Lecția 98-8: Lumină călătoare cu buton și LED-uri cu Arduino
- Lecția 98-9: Indicator de nivel al tensiunii LED folosind Arduino sau lumină călătoare cu potențiometru
- Lecția 98-10: Semafor cu Arduino
Capitole
- [00:00] Prezentare generală a celor 10 proiecte cu LED-uri
- [01:00] Introducere în cursul pas cu pas Arduino
- [02:29] Noțiuni de bază despre LED-uri: simboluri, polaritate și curent
- [03:49] Calcularea rezistenței LED-ului cu legea lui Ohm
- [05:53] Proiectul 1: Aprinderea și stingerea unui LED
- [12:43] Proiectul 2: LED cu buton
- [17:13] Proiectul 3: Comutarea LED-ului cu buton
- [20:12] Proiectul 4: Varierea intensității unui LED
- [23:20] Proiectul 5: Varierea intensității unui LED cu un buton
- [27:32] Proiectul 6: LED balansoar
- [30:47] Proiectul 7: Lumină călătoare
- [36:41] Proiectul 8: Lumină călătoare cu buton
- [42:25] Proiectul 9: Indicator de nivel al tensiunii cu LED-uri
- [49:25] Proiectul 10: Semafor cu Arduino
This code has not been parsed yet. Please return to the admin panel to parse it.
Lucruri de care ai putea avea nevoie
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
Resurse și referințe
-
DocumentațieDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
Extern
-
Extern
-
Extern
Fișiere📁
Biblioteci Arduino (zip)
-
Codul sursă al kitului de învățare Smart Car 3-în-1 de la SunFounder
3in1-kit-main-v2.zip12.80 MB
Manualul utilizatorului
-
Manual de asamblare pentru SunFounder 3-in-1 Arduino Smart CarAcest document prezintă asamblarea pas cu pas a SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB