Lecția 98-7: Mers cu lumină folosind Arduino și 5 LED-uri
O lumină care merge (numită și lumină „chasing" sau „Knight Rider") este unul dintre proiectele clasice Arduino pentru începători — și pe bună dreptate. Te învață cum să controlezi mai multe ieșiri în secvență, cum să temporizezi evenimentele și cum să te gândești la rezistențele de limitare a curentului, totul în timp ce produci ceva satisfăcător vizual. În acest proiect vei conecta cinci LED-uri la un Arduino și le vei programa astfel încât fiecare să se aprindă pe rând, creând iluzia unei singure lumini care „merge" de-a lungul rândului.
Odată ce înțelegi modelul, îl poți reutiliza într-un număr surprinzător de mare de construcții din lumea reală:
- Iluminare decorativă: o bordură cu efect de alergare pentru un raft, ramă de tablou sau machetă.
- Indicatoare de direcție: un efect secvențial de semnalizare pentru un vehicul de recuzită sau o bicicletă electrică.
- Afișaj de progres sau stare: un rând de LED-uri care avansează pe măsură ce un proces se finalizează.
- Recuzită pentru jocuri și panouri de scor: o „țintă mobilă" sau un indicator de nivel.
- Material didactic: cea mai clară demonstrație posibilă a ieșirilor digitale și a temporizării.
Aceeași cablare cu cinci LED-uri este reutilizată în mai multe alte proiecte din acest curs, astfel încât hardware-ul pe care îl construiești aici devine o platformă reutilizabilă.
Cum funcționează lumina care merge
Principiul este exact același ca aprinderea unui singur LED — pur și simplu se repetă de cinci ori (în video la 30:47). Fiecare LED este conectat la propriul pin Arduino prin propriul rezistor de limitare a curentului, iar toate rezistoarele împart o șină comună de masă. Schița aprinde apoi un pin HIGH, așteaptă, îl pune LOW, așteaptă și trece la următorul pin. Deoarece doar un LED este aprins la un moment dat, ochiul percepe secvența ca mișcare.
Cele două valori de temporizare sunt cele care dau efectului caracterul său. Timpul de aprindere controlează cât timp rămâne aprins fiecare LED, iar timpul de stingere controlează intervalul înainte ca următorul LED să se aprindă. Un timp de aprindere scurt cu un timp de stingere lung produce un singur punct care călătorește rapid; un timp de aprindere lung cu un timp de stingere scurt produce o baleiere mai lină și mai continuă (în video la 35:00).
Hardware și componente
- 1 × placă Arduino (Uno, Nano sau similar)
- 5 × LED-uri (orice culoare; amestecarea culorilor face efectul mai ușor de citit)
- 5 × rezistoare — 300 Ω până la 1 kΩ funcționează bine
- 1 × breadboard
- Fire de conexiune
- Cablu USB sau acumulator pentru alimentare
Dacă vrei să adaugi mai târziu o variantă cu buton, vei avea nevoie și de un buton momentan și două fire de conexiune suplimentare.
Alegerea valorii rezistorului
Un LED are o tensiune directă de aproximativ 2 V și dorește aproximativ 10 mA pentru luminozitate maximă (în video la 03:49). Cu o alimentare de 5 V, rezistorul trebuie să cadă restul de 3 V. Aplicând legea lui Ohm, R = V / I = 3 V / 0,01 A = 300 Ω. În practică, orice valoare de la 300 Ω până la aproximativ 1 kΩ va funcționa — cu cât rezistența este mai mare, cu atât LED-ul este mai slab, dar circuitul este mai sigur și mai eficient (în video la 05:33).
Ghid de cablare
Introdu cele cinci LED-uri în breadboard cu anozii (piciorul mai lung) orientați în aceeași direcție. Conectează fiecare catod (piciorul mai scurt, cu latura plată) la propriul rezistor și unește capătul îndepărtat al tuturor celor cinci rezistoare la o șină comună de masă. Apoi trage un fir de conexiune de la fiecare anod la un pin Arduino.
În această construcție, LED-urile sunt atribuite pinilor 3, 4, 5, 6 și 7 (în video la 31:29). Numerele pinilor sunt definite în partea de sus a schiței, așa că dacă preferi o altă configurație trebuie să modifici doar acele cinci linii.
Explicația codului
Schița este intenționat de simplă, astfel încât un începător să poată urmări fiecare linie. Doar blocul din partea de sus trebuie editat pentru propria configurație.
const int LED1 = 3;
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;
int offTime = 30; // the time each LED waits in the OFF state
int onTime = 100; // the time each LED is ON
Definițiile pinilor. Cele cinci linii const int asociază fiecare LED unui pin fizic Arduino. Deoarece sunt declarate const, valorile nu pot fi modificate mai târziu în program — acesta este un obicei de siguranță care previne reatribuirea accidentală. Dacă îți conectezi LED-urile la pini diferiți, schimbă numerele aici și nimic altceva.
onTime și offTime. Aceste două numere întregi sunt singurele variabile de „comportament" din proiect și sunt cele cu care vei dori să experimentezi:
onTime— cât timp (în milisecunde) rămâne aprins fiecare LED. Valorile mai mari fac fiecare pas să pară mai lent și mai deliberat.offTime— pauza după ce un LED se stinge înainte ca următorul să se aprindă. Valorile mai mici fac lumina să călătorească mai repede.
Încercați onTime = 200 și offTime = 200 pentru o cursă uniformă, de viteză medie, sau onTime = 30 și offTime = 30 pentru un efect foarte rapid, aproape estompat (în video la 36:06).
Funcția setup() rulează o singură dată și pur și simplu setează toate cele cinci pini în modul OUTPUT. Funcția loop() repetă apoi același model în patru pași pentru fiecare LED: setează pinul HIGH, așteaptă onTime, setează-l LOW, așteaptă offTime. Când al cincilea LED termină, bucla repornește de la primul, producând o defilare nesfârșită.
Proiect live și demonstrație
Cu valorile implicite, LED-urile înaintează de-a lungul rândului într-un ritm relaxat. Încărcarea schiței cu onTime și offTime setate la 200 ms produce un marș constant și uniform; reducerea ambelor la 30 ms face ca lumina să alerge de-a lungul rândului aproape prea repede pentru a fi urmărită (în video la 36:21).
Două experimente utile de încercat odată ce funcționează:
- Faceți timpul de aprindere mai scurt decât timpul de stingere pentru a crea un punct călător distinct.
- Faceți timpul de aprindere mai lung decât timpul de stingere pentru a crea o strălucire soft, suprapusă.
Aceeași cablare cu cinci LED-uri este reutilizată în proiectul următor, unde un buton împinge lumina cu un pas pe rând. Acea construcție este acoperită în Lecția 98-8: Lumină călătoare cu buton și LED-uri cu Arduino.
Dacă preferați să controlați rândul dintr-o intrare analogică în loc de un buton, vedeți Lecția 98-9: Indicator de nivel de tensiune cu LED-uri folosind Arduino sau lumină călătoare cu potențiometru.
Mergând mai departe
Odată ce defilarea de bază funcționează, un pas natural următor este să faceți lumina să oscileze înainte și înapoi în loc să sară de la ultimul LED la primul. Acesta este un exercițiu pur de cod — fără hardware suplimentar — și este o modalitate bună de a exersa buclele și tablourile. De asemenea, puteți combina acest proiect cu versiunea cu buton pentru a construi un afișaj avansat manual.
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 toggle folosind un buton cu Arduino
- Lecția 98-4: Estomparea unui LED folosind Arduino: Controlul luminozității
- Lecția 98-5: Estomparea luminii când un buton este apăsat folosind Arduino
- Lecția 98-6: Joc cu LED-uri de tip balansoar cu Arduino
- 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-uri folosind Arduino sau lumină călătoare cu potențiometru
- Lecția 98-10: Semafoare cu Arduino
Capitole
- [00:00] Prezentarea generală a celor zece proiecte cu LED-uri
- [01:22] Introducere în cursul pas cu pas de Arduino
- [02:29] Ce este un LED și cum să-i identifici pinii
- [03:49] Calcularea rezistenței de limitare a curentului
- [30:47] Prezentarea proiectului cu lumină călătoare
- [31:06] Schema de cablare pentru cinci LED-uri
- [32:52] Parcurgerea codului pentru lumina călătoare
- [34:39] Demonstrație și modificarea valorilor de temporizare
- [36:41] Avansarea luminii cu un buton (tutorial separat)
- [42:25] Bară de tensiune cu LED-uri și potențiometru (tutorial separat)
- [49:25] Semafoare cu Arduino (tutorial separat)
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