Lecția 98-10: Semafoare cu Arduino
Semaforoarele sunt unul dintre acele sisteme cotidiene la care rareori ne gândim — până când construim unul. În acest proiect, vei folosi un Arduino pentru a simula o secvență reală de semafor: verde aprins, apoi galben, apoi roșu, fiecare pentru propria durată configurabilă, repetându-se la nesfârșit. Este un proiect perfect pentru începători, deoarece te învață logica temporizării secvențiale, controlul mai multor ieșiri și relația dintre ceea ce scrii în cod și ceea ce vezi în lumea fizică.
Dincolo de demonstrația din clasă, logica temporizării pe care o înveți aici apare peste tot:
- Construirea unui model realist de semafor pentru o machetă de cale ferată sau dioramă
- Crearea unui sistem de indicatoare temporizate pentru un atelier sau garaj (de exemplu, semnale „intrare permisă" / „așteptați")
- Învățarea fundamentelor pentru semnale de trecere pentru pietoni cu faze declanșate de buton
- Prototiparea unei secvențe de relee temporizate pentru sarcini industriale sau de automatizare casnică
- Învățarea copiilor despre secvențiere, temporizare și electronică cu un obiect familiar și recognoscibil
Partea cea mai bună: întregul ansamblu funcționează autonom odată încărcat. Programezi Arduino o singură dată de pe computer, apoi îl alimentezi de la o baterie sau un adaptor și funcționează la nesfârșit — nu este necesar un PC (în video la 12:27).
Cum funcționează semaforul
Un semafor este de fapt doar o secvență temporizată de trei ieșiri. Arduino aprinde câte un LED pe rând, așteaptă un număr stabilit de secunde, îl stinge și trece la următorul. Ciclul se repetă apoi. În exemplul de temporizare din video, verdele rămâne aprins 3 secunde, galbenul 1 secundă și roșul 3 secunde — dar toate acestea sunt ajustabile în cod (în video la 49:44).
Motivul pentru care secvența pare realistă este că duratele oglindesc fluxul real de trafic: verdele și roșul sunt mai lungi pentru că vehiculele au nevoie de timp să traverseze intersecția, în timp ce galbenul este scurt pentru că este doar un avertisment de tranziție. Le poți regla pentru a se potrivi oricărui scenariu dorit.
Hardware și componente
Lista de piese pentru acest proiect este minimă:
- 1 × placă Arduino (Uno, Nano sau Mega — orice cu cel puțin 3 pini digitali)
- 3 × LED-uri (roșu, galben/portocaliu și verde — culorile diferite fac efectul evident)
- 3 × rezistențe (300 Ω până la 1 kΩ funcționează bine; video-ul folosește 1 kΩ)
- 1 × breadboard
- Fire de conexiune
- Opțional: o baterie litiu-ion sau un adaptor de alimentare de 5 V pentru a-l rula autonom
Video-ul recomandă utilizarea a trei LED-uri de culori distincte, astfel încât efectul de semafor să fie imediat vizibil — altfel ar trebui să le etichetezi (în video la 02:04).
Înțelegerea limitării curentului LED-ului
Fiecare LED are nevoie de o rezistență de limitare a curentului în serie. Iată de ce: un LED are o tensiune directă aproape fixă (de obicei în jur de 2 V pentru LED-urile standard de 5 mm), iar dacă îl conectezi direct la 5 V, curentul va crește brusc și îl va distruge. Rezistența absoarbe tensiunea în exces.
Folosind legea lui Ohm, dacă LED-ul scade 2 V și sursa este de 5 V, atunci 3 V trebuie să cadă pe rezistență. Cu un curent țintă de aproximativ 10 mA, valoarea rezistenței rezultă la aproximativ 300 Ω (în video la 04:41). În practică, orice de la 300 Ω până la 1 kΩ va funcționa — valorile mai mari pur și simplu fac LED-ul mai slab.
Ghid de cablare
Fiecare LED este cablat identic: anodul (piciorul mai lung) se conectează la un pin digital Arduino, iar catodul (piciorul mai scurt, partea plată a corpului LED-ului) se conectează printr-o rezistență la masă.
În cablarea din video, LED-ul roșu se conectează la pinul 2, LED-ul galben/portocaliu la pinul 3 și LED-ul verde la pinul 4 (în video la 50:50). Toate cele trei rezistențe împart o șină comună de masă pe breadboard. Ordinea culorilor pe breadboard nu contează — ceea ce contează este că numerele pinilor din codul tău corespund pinilor pe care i-ai folosit efectiv.
Un sfat util din videoclip: rezistorul poate fi plasat pe oricare parte a LED-ului. Îl poți pune între pinul Arduino și anodul LED-ului, sau între catodul LED-ului și masă — electric este același lucru (în videoclip la 51:52).
Explicația codului
Programul complet este disponibil sub articol. Aici ne vom concentra pe părțile pe care vei dori să le personalizezi.
La începutul sketch-ului, trei definiții de pini asociază fiecare LED unui pin digital. Dacă ai conectat LED-urile la pini diferiți, modifică aceste valori:
const int greenLED = 4;
const int yellowLED = 3;
const int redLED = 2;
Urmează constantele de temporizare. Acestea controlează cât timp rămâne aprins fiecare LED, în milisecunde. Videoclipul folosește implicit 5000 ms pentru verde, 1000 ms pentru galben și 5000 ms pentru roșu — dar în timpul demonstrației acestea au fost modificate la 3 s / 1 s / 3 s, iar mai târziu la 10 s / 3 s / 10 s (în videoclip la 56:27):
const int greenOnTime = 5000;
const int yellowOnTime = 1000;
const int redOnTime = 5000;
Pentru a schimba ritmul semaforului tău, trebuie doar să editezi aceste trei valori. Vrei o intersecție lentă și realistă? Încearcă 10000, 3000, 10000. Vrei o demonstrație rapidă? Încearcă 1000, 300, 1000.
În interiorul loop(), secvența este simplă: aprinde verde, așteaptă, stinge verde; aprinde galben, așteaptă, stinge galben; aprinde roșu, așteaptă, stinge roșu; apoi revino la verde. Monitorul serial afișează fiecare schimbare de stare, astfel încât să poți verifica dacă temporizarea corespunde așteptărilor tale.
Demonstrație live
Odată ce codul este încărcat, Arduino rulează ciclul de unul singur. În videoclip, LED-ul verde se aprinde primul, apoi după durata sa galbenul se aprinde scurt, apoi roșu, iar ciclul se reia imediat (în videoclip la 55:20).
Monitorul serial reflectă acest lucru în text — "green LED on", "green off", "yellow on" și așa mai departe — ceea ce este o modalitate excelentă de a confirma că valorile tale de temporizare funcționează conform intenției. Când ești gata să îl rulezi fără cablu, deconectează USB-ul și conectează o baterie litiu-ion sau un adaptor de 5 V; Arduino va continua să ruleze ciclul fără un computer (în videoclip la 56:11).
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 cu comutare folosind un buton cu Arduino
- Lecția 98-4: Estomparea unui LED folosind Arduino: Controlul luminozității
- Lecția 98-5: Estompează lumina 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 al tensiunii LED folosind Arduino sau lumină călătoare cu potențiometru
Capitole
- [00:00] Prezentarea generală a celor 10 proiecte cu LED-uri Arduino
- [01:22] Introducere în cursul pas cu pas Arduino
- [02:29] Ce este un LED: simbol, anod și catod
- [03:49] Calcularea rezistorului limitator de curent pentru LED
- [49:25] Introducere în proiectul semaforului
- [49:44] Explicarea temporizării semaforului
- [50:34] Schema de conectare pentru semafor
- [52:13] Explicația codului pentru semafor
- [54:32] Demonstrație live cu monitorul serial
- [55:30] Modificarea valorilor de temporizare
- [56:11] Rularea semaforului pe baterie
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