Lecția 98-4: Estomparea unui LED folosind Arduino: Controlul luminozității
LED-urile sunt peste tot — indicatoare, afișaje, iluminare decorativă — dar majoritatea începătorilor se opresc la simpla aprindere și stingere a unuia. Acest proiect face pasul următor: estomparea lină a unui LED aprinzându-l și stingându-l folosind capacitatea PWM (Modulare prin Impulsuri în Lățime) integrată a Arduino. În loc de o clipire bruscă, obțineți o creștere și descreștere treptată a luminozității care imită estomparea naturală, efectele de respirație și controlul de tip analogic dintr-un pin pur digital. Este unul dintre cele mai satisfăcătoare prime proiecte pentru că puteți vedea rezultatul imediat, iar aceeași tehnică stă la baza controlului vitezei motoarelor, volumului audio și estompării luminii de fundal în produsele reale.
Odată ce înțelegeți estomparea, o puteți aplica într-o gamă largă de construcții practice:
- Crearea unui indicator de stare „respirator" pe un dispozitiv care pulsează ușor în loc să clipească deranjant
- Estomparea automată a unei lumini de noapte cu LED în funcție de lumina ambientală sau ora din zi
- Controlul luminozității unei lumini de fundal pe un afișaj LCD sau OLED
- Construirea unei iluminări de ambient sau lămpi decorative cu tranziții line între nivelurile de luminozitate
- Simularea unui ceas de alarmă cu răsărit lent care se aprinde treptat pentru a vă trezi natural
- Adăugarea controlului vitezei la motoare mici de curent continuu sau ventilatoare (același principiu PWM se aplică)
Acest tutorial face parte din Cursul Pas cu Pas Arduino Robojax și acoperă în mod specific Proiectul 4 din 10: Estomparea unui LED Folosind Arduino. Programul complet este disponibil pentru descărcare sub articol.
Hardware și Componente
Lista de piese pentru acest proiect este minimă — dacă ați mai lucrat cu Arduino înainte, probabil aveți deja tot ce vă trebuie:
- 1× Placă Arduino (Uno, Nano, Mega sau orice placă compatibilă)
- 1× LED (5mm sau 3mm, orice culoare)
- 1× Rezistor (200Ω până la 1000Ω — un interval de 300Ω până la 1kΩ funcționează bine)
- Breadboard și fire de conexiune DuPont
- Cablu USB pentru programare și alimentare
O notă importantă despre LED: piciorul mai lung este anodul (pozitiv), iar piciorul mai scurt — sau partea cu marginea plată pe carcasa de plastic — este catodul (negativ). Inversarea acestora înseamnă că LED-ul pur și simplu nu se va aprinde, așa că verificați de două ori înainte de a alimenta.
Pentru valoarea rezistorului, transcrierea parcurge calculul la (în video la 03:49): un LED tipic are o cădere de tensiune de aproximativ 2V și necesită aproximativ 10mA de curent. Cu o alimentare de 5V, restul de 3V trebuie să cadă pe rezistor, dând R = V/I = 3V / 0,01A = 300Ω. În practică, orice de la 300Ω până la 1000Ω va funcționa — valorile mai mari produc doar un LED mai slab. Pentru estompare, acest lucru este de fapt în regulă, deoarece oricum variați luminozitatea.
Ghid de Cablare
Cablarea este pe cât de simplă se poate. Anodul LED-ului se conectează printr-un rezistor la un pin compatibil PWM de pe Arduino — în acest proiect, pinul 3. Catodul se conectează la masă.
De ce pinul 3 în mod specific? Pentru că nu toate pinii Arduino suportă PWM. Pe majoritatea plăcilor Arduino, pinii compatibili PWM sunt marcați cu simbolul tilde (~) — de obicei pinii 3, 5, 6, 9, 10 și 11 pe un Uno. Dacă folosiți un pin non-PWM, analogWrite() nu va produce o ieșire variabilă; LED-ul va fi doar aprins sau stins.
Conectați circuitul după cum urmează:
- Introduceți LED-ul în breadboard, observând care picior este anodul (mai lung) și care este catodul (mai scurt/partea plată).
- Conectați anodul LED-ului la pinul 3 al Arduino prin rezistor.
- Conectați catodul LED-ului la pinul GND al Arduino.
- Conectați Arduino la computer prin USB.
Explicația Codului
Sketch-ul pentru acest proiect se bazează pe exemplul clasic Arduino „Fade", cu câteva modificări. În loc să explicăm fiecare linie, să ne concentrăm pe părțile pe care veți dori să le ajustați pentru propriile experimente.
Variabile Configurabile de Utilizator
În partea de sus a codului, trei variabile controlează întregul comportament:
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— Aceasta definește la ce pin este conectat LED-ul. Valoarea implicită este pinul 3, dar o poți schimba cu orice pin compatibil cu PWM (marcat cu ~ pe placa ta). Dacă muți LED-ul la un alt pin, actualizează această valoare pentru a se potrivi.brightness— Acesta este nivelul curent de luminozitate, variind de la 0 (stins) la 255 (luminozitate maximă). Codul începe de la 0, dar ai putea începe de oriunde în acest interval.fadeAmount— Acesta este cel mai interesant de experimentat. Controlează câte „pași" de luminozitate sunt făcuți în fiecare ciclu. O valoare mică precum 3 produce o tranziție lentă și graduală. O valoare mai mare precum 20 face LED-ul să se aprindă și să se stingă foarte rapid. Transcriptul demonstrează acest lucru la (în video la 22:37) — schimbarea de la 5 la 20 accelerează dramatic efectul.
Cum funcționează tranziția graduală
Nucleul tranziției graduale se întâmplă în două linii din interiorul loop():
analogWrite(led, brightness);
brightness = brightness + fadeAmount;
La fiecare trecere prin buclă, valoarea curentă de luminozitate este scrisă către LED folosind analogWrite(), apoi luminozitatea este incrementată cu fadeAmount. Funcția analogWrite() folosește PWM pentru a simula o tensiune analogică — comută rapid pinul pornit și oprit, iar raportul dintre timpul pornit și timpul oprit determină luminozitatea percepută.
Când luminozitatea atinge fie 0, fie 255, codul inversează direcția schimbând semnul lui fadeAmount:
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
Aceasta este ceea ce face LED-ul să se aprindă treptat, apoi să se stingă treptat, apoi să se aprindă din nou — un ciclu continuu de respirație. delay(30) de la sfârșitul buclei controlează viteza generală a animației. O întârziere mai scurtă face tranziția mai rapidă; o întârziere mai lungă o încetinește.
Experimentarea cu valorile
Două variabile îți oferă cel mai mult control asupra efectului vizual:
- Mărește
fadeAmountpentru o tranziție mai rapidă și mai dramatică. Încearcă 10 sau 20. - Micșorează
fadeAmountpentru un efect lent și delicat de respirație. Încearcă 1 sau 2. - Ajustează valoarea
delay()pentru a schimba ritmul. Întârzierile mai mici fac întregul ciclu mai rapid; întârzierile mai mari îl lungesc.
Combinarea unui fadeAmount mic cu o întârziere scurtă produce o tranziție extrem de lină, aproape organică — ideală pentru iluminare ambientală. Un fadeAmount mare cu o întârziere scurtă creează un efect de pulsație rapidă.
Demonstrație live a proiectului
Odată ce codul este încărcat, vei vedea LED-ul aprinzându-se treptat de la stins la luminozitate maximă, apoi diminuându-se din nou, repetându-se la nesfârșit. Transcriptul arată comportamentul implicit la (în video la 22:25) — o tranziție lină, de viteză moderată.
Când fadeAmount este schimbat la 20, LED-ul se aprinde și se stinge foarte rapid — aproape ca o pâlpâire. Când este setat la 3, tranziția durează vizibil mai mult, creând o tranziție relaxată și graduală. Acest lucru este demonstrat clar în video la (în video la 23:02).
Frumusețea acestui proiect constă în faptul că poți vedea efectul modificărilor codului imediat — nu sunt necesare modificări ale cablajului, doar editează variabilele și reîncarcă. Această buclă de feedback strânsă îl face o modalitate excelentă de a-ți construi intuiția despre cum interacționează PWM-ul și temporizarea.
Dacă vrei să duci acest lucru mai departe declanșând tranziția cu un buton în loc să-l lași să ruleze continuu, acest lucru este acoperit într-un tutorial separat — vezi secțiunea de proiecte conexe de mai jos.
Proiecte conexe din acest video
- 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 cu comutare folosind un buton cu Arduino
- Lecția 98-5: Tranziție graduală a luminii când un buton este apăsat folosind Arduino
- Lecția 98-6: Joc cu LED de tip 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 de tensiune cu LED folosind Arduino sau lumină călătoare cu potențiometru
- Lecția 98-10: Semafoare cu Arduino
Capitole
- [00:00] Prezentare generală a celor 10 proiecte cu LED-uri Arduino
- [01:22] Introducere în curs și componentele necesare
- [02:29] Înțelegerea LED-urilor: simboluri, polaritate și tipuri
- [03:49] Calcularea valorii rezistenței pentru LED folosind legea lui Ohm
- [05:53] Proiectul 1: Aprinderea și stingerea unui LED
- [12:43] Proiectul 2: Controlul LED-ului cu un buton
- [17:13] Proiectul 3: Comutarea LED-ului cu buton
- [20:12] Proiectul 4: Tranziția graduală a LED-ului — prezentarea codului
- [22:25] Demonstrație de tranziție graduală și ajustarea vitezei
- [23:20] Proiectul 5: Tranziție graduală a LED-ului cu declanșare prin buton
- [27:32] Proiectul 6: Efect de LED balansoar
- [30:47] Proiectul 7: Lumină călătoare cu 5 LED-uri
- [36:41] Proiectul 8: Lumină călătoare controlată prin buton
- [42:25] Proiectul 9: Indicator de nivel de tensiune cu LED și potențiometru
- [49:25] Proiectul 10: Semafoare 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