Caută cod

Lecția 98-6: Joc LED cu balansoar folosind Arduino

Lecția 98-6: Joc LED cu balansoar folosind Arduino

Proiectul LED cu balansoar este un exercițiu clasic pentru începători care predă unul dintre cele mai importante concepte din programarea Arduino: alternarea a două ieșiri într-un ritm temporizat. Folosind doar două LED-uri, două rezistențe și câteva fire de conexiune, vei construi un circuit în care un LED verde și un LED roșu se aprind pe rând, imitând mișcarea sus-jos a unui balansoar din parc. Este o construcție simplă, dar introduce elementele de bază fundamentale — definirea pinilor, constantele de temporizare și apelurile secvențiale digitalWrite() — care apar în aproape fiecare schiță Arduino pe care o vei scrie vreodată.

două LED-uri cu rezistență pe breadboard conectate la Arduino
două LED-uri cu rezistență pe breadboard conectate la Arduino

Deoarece modelul de balansoar este de fapt doar „aprinde un lucru, stinge-l, aprinde celălalt lucru, stinge-l, repetă", aceeași structură se extinde în zeci de utilizări practice. Iată câteva idei pentru a-ți stimula imaginația:

  • Lumini indicatoare alternative — o pereche „sigur / alertă" pe un panou de control care alternează.
  • Simulare de trecere la nivel cu calea ferată — două lămpi care clipesc alternativ pe măsură ce un tren se apropie.
  • Indicator de direcție cu două benzi — un afișaj cu săgeți „încoace / încolo" pentru o alee de acces sau o parcare.
  • Decorațiune de sărbători — LED-uri roșii și verzi care își schimbă locul pentru un efect festiv de clipire.
  • Fundament de învățare — abilitățile de temporizare și secvențiere de aici sunt aceleași pe care le vei folosi mai târziu pentru semafoare, lumini de mers și animații cu mai multe LED-uri.

Cum funcționează efectul de balansoar

Un LED este o diodă care emite lumină, iar simbolul său este un triunghi care indică spre o linie. Linia plată este catodul (negativ), iar spatele triunghiului este anodul (pozitiv). Pe un LED fizic, piciorul mai lung este anodul, iar piciorul mai scurt, cu latura plată, este catodul. Curentul circulă de la anod la catod, astfel încât anodul se conectează spre pinul Arduino, iar catodul se conectează printr-un rezistor la masă (în video la 02:29).

Rezistența contează. Un LED mic tipic are nevoie de aproximativ 2 V la bornele sale și aproximativ 10 mA de curent. Dacă Arduino-ul tău furnizează 5 V, restul de 3 V trebuie să fie căzuți de rezistență. Folosind legea lui Ohm, R = V / I = 3 V / 0,01 A = 300 Ω. Orice valoare de la aproximativ 300 Ω până la 1000 Ω va funcționa — valorile mai mari pur și simplu fac LED-ul mai slab (în video la 03:49).

Pentru balansoar, cele două LED-uri sunt conectate identic: fiecare anod merge la propriul pin Arduino, iar fiecare catod trece prin propriul rezistor către o șină de masă comună. Singura diferență dintre cele două este pinul de care sunt atașate.

Hardware și componente

  • 1 × placă Arduino (Uno, Nano, Mega sau similar)
  • 2 × LED-uri — unul roșu, unul verde (orice două culori funcționează)
  • 2 × rezistențe, 300 Ω până la 1000 Ω (220 Ω sau 330 Ω sunt alegeri comune)
  • 1 × breadboard
  • Fire de conexiune (fire DuPont)
  • Cablu USB pentru programare și alimentare

Atât — fără butoane, fără potențiometre, fără senzori. Aceasta este în mod deliberat cea mai redusă listă de piese posibilă, astfel încât să te poți concentra în întregime pe logica codului.

Ghid de conectare

Schemă Arduino pentru două LED-uri balansoar
Schemă Arduino pentru două LED-uri balansoar
Conectare Arduino pentru două LED-uri balansoar
Conectare Arduino pentru două LED-uri balansoar

Conectarea este simetrică și ușor de urmărit. Introdu ambele LED-uri în breadboard. Conectează anodul (piciorul mai lung) al LED-ului verde la pinul 2 al Arduino și anodul LED-ului roșu la pinul 3 al Arduino. Fiecare catod (piciorul mai scurt) se conectează la un capăt al propriului rezistor, iar celălalt capăt al ambelor rezistențe se unește într-o șină comună care merge la pinul GND al Arduino (în video la 27:45).

Deoarece ambele LED-uri împart aceeași șină de masă, este nevoie de un singur fir de masă de la breadboard înapoi la Arduino. Cele două fire de semnal — unul la pinul 2, unul la pinul 3 — sunt singurele conexiuni care se schimbă între cele două LED-uri.

Explicația codului

Schița este intenționat de scurtă, astfel încât fiecare linie să fie semnificativă. Iată părțile pe care vei dori de fapt să le ajustezi:

Definirea pinilor

const int greenLEDPin = 2;//define a pin for green LED
const int redLEDPin = 3;//define a pin for red LED

Aceste două constante îi spun Arduino-ului la ce pini sunt conectate LED-urile. Dacă ai conectat LED-urile la pini diferiți — să zicem pinul 8 și pinul 9 — acesta este singurul loc în care trebuie să modifici. Cuvântul cheie const înseamnă că valoarea este fixă pe durata de viață a programului și nu poate fi suprascrisă accidental mai târziu.

Constanta de temporizare

const int ON_TIME = 500;

Această singură valoare controlează cât timp rămâne aprins fiecare LED, în milisecunde. Valoarea implicită de 500 înseamnă că fiecare LED este aprins timp de o jumătate de secundă, astfel încât un ciclu complet verde-apoi-roșu durează o secundă. Reduceți-o la 200 pentru o clipire rapidă sau măriți-o la 1000 pentru un ritm lent și deliberat de o secundă per LED (în video la 30:17). Deoarece ambele LED-uri împart această constantă, ele rămân întotdeauna sincronizate — balansoarul rămâne echilibrat.

Configurare

În interiorul setup(), cele două pini sunt declarați ca ieșiri cu pinMode(), iar monitorul serial este pornit la 9600 baud, astfel încât să puteți urmări mesajele de stare ale LED-urilor derulându-se. Aceasta rulează o singură dată, când placa primește alimentare.

Bucla

Funcția loop() este locul unde se întâmplă balansoarul. Ea execută patru acțiuni în secvență: aprinde LED-ul verde, așteaptă ON_TIME milisecunde, îl stinge, apoi face același lucru pentru LED-ul roșu. Când bucla ajunge la sfârșit, o ia automat de la început — acesta este întregul comportament de „balansoar". Nu există nicio variabilă de stare și nicio condiție de verificat, deoarece modelul este pur secvențial.

Proiect live și demonstrație

Odată ce codul este încărcat, veți vedea LED-ul verde aprinzându-se timp de o jumătate de secundă, apoi LED-ul roșu, apoi verde din nou, la nesfârșit. Deschiderea monitorului serial (Tools → Serial Monitor, sau Ctrl+Shift+M) afișează „Green LED ON" și „Red LED ON" pe măsură ce modelul rulează, ceea ce este o modalitate practică de a confirma că temporizarea corespunde cu cea pe care ați setat-o.

Încercați să schimbați ON_TIME la 200 și să reîncărcați — LED-urile vor alterna vizibil mai rapid. Setați-l la 1000 și balansoarul devine o alternanță lentă și deliberată. De asemenea, puteți deconecta Arduino de la USB și alimenta de la o baterie sau un adaptor de 5 V; schița rulează identic deoarece este deja stocată în memoria plăcii.

Proiecte similare din acest video

Capitole

  • [00:00] Prezentarea generală a celor 10 proiecte cu LED-uri Arduino
  • [01:22] Introducere în cursul pas cu pas Arduino
  • [02:29] Înțelegerea LED-urilor: simbol, anod și catod
  • [03:49] Calcularea rezistenței serie pentru LED cu legea lui Ohm
  • [27:32] Prezentarea proiectului cu LED-uri balansoar
  • [27:45] Schema de conectare pentru proiectul balansoar
  • [28:28] Explicarea codului balansoarului
  • [30:06] Demonstrarea balansoarului cu temporizări diferite
  • [30:47] Prezentarea generală a proiectului cu lumină călătoare
  • [36:41] Lumină călătoare controlată de buton
  • [42:25] Bară de tensiune cu LED-uri și potențiometru
  • [49:25] Proiectul de semafor cu Arduino

Imagini

Arduino wiring for two LEDs see saw
Arduino wiring for two LEDs see saw
Arduino schematic for two LEDs see saw
Arduino schematic for two LEDs see saw
330_ohm_resistor
330_ohm_resistor
două LED-uri cu rezistor pe breadboard conectate la Arduino
două LED-uri cu rezistor pe breadboard conectate la Arduino
938-Lessson 98-LED-6: Arduino code two LED, See-saw
Limba: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Fișiere📁

Biblioteci Arduino (zip)

Manualul utilizatorului