Cum se face controlerul semaforului bazat pe Arduino?

Semafoarele sunt dispozitive de semnalizare care sunt utilizate pentru a controla fluxul de trafic pe intersecțiile unui drum, treceri de pietoni și alte locații. Este o combinație de trei culori de lumină, care sunt roșu, galben și verde. Lumina roșie le spune oamenilor să se oprească, galbenul spune să se pregătească sau să pornească motorul dacă este oprit, iar lumina verde indică faptul că sunteți liber să mergeți mai departe.



Semafor

În acest proiect, vom realiza un sistem de semnalizare a traficului cu 4 căi folosind un microcontroler. Vom arde un Codul C pe placa Arduino Uno pentru a-i spune cum să porniți și să opriți LED-urile, astfel încât să se poată realiza sincronizarea perfectă a comutării în procesul de semnalizare. 4 combinații de 4 LED-uri vor fi utilizate și așezate pe panoul de testare în scopul testării.



Cum să faci un semnal de trafic în 4 direcții folosind Seeeduino v4.2?

Semnalele de circulație sunt cel mai important lucru instalat pe drumuri pentru a menține un flux lin și constant de trafic și minimizează șansele de accidente. Putem realiza acest proiect pe un mic panou. Să ne adunăm câteva informații despre acest proiect și să începem să lucrăm.



Pasul 1: Colectarea componentelor

Cea mai bună abordare pentru a începe orice proiect este de a face o listă de componente complete la început și de a parcurge un scurt studiu al fiecărei componente. Acest lucru ne ajută să evităm inconvenientele din mijlocul proiectului. O listă completă a tuturor componentelor utilizate în acest proiect este prezentată mai jos.



  • Seeeduino V4.2
  • Sârme jumper
  • LED (4xGreen, 4xYellow, 4xRed)
  • Adaptor de 12V AC la DC

Pasul 2: Studierea componentelor

Acum, pe măsură ce cunoaștem rezumatul proiectului nostru și avem, de asemenea, o listă completă a tuturor componentelor, permiteți-ne să facem un pas înainte și să parcurgem un scurt studiu al componentelor pe care le vom folosi.

Seeeduino v4.2 este una dintre cele mai bune plăci compatibile Arduino din lume care se bazează pe microcontrolerul Atmega 328 MCU. deoarece este ușor de utilizat, mai stabil și arată mai bine decât multe alte plăci. Se bazează pe bootloader-ul Arduino. are un ATMEGA16U2 ca convertor UART-la-USB deoarece poate fi folosit ca cip FTDI. este conectat la computer folosind un cablu micro USB, care se numește în general un cablu Android. O mufă de curent continuu poate fi utilizată și pentru alimentarea plăcii. puterea de intrare trebuie să fie de la 7V la 15V.

Seeeduino



LA Breadboard este un dispozitiv fără lipire. Este folosit pentru a realiza și testa prototipuri temporare de circuite și modele electronice. Majoritatea componentelor electronice sunt pur și simplu conectate la o placă de prindere doar prin introducerea pinilor în placă de prindere. O fâșie de metal este așezată în găurile panoului și găurile sunt conectate într-un mod specific. Conexiunile găurilor sunt prezentate în diagrama de mai jos:

Breadboard

Pasul 3: Principiul de lucru

Să trecem printr-o scurtă introducere la principiul de lucru al proiectului de semnalizare a traficului în 4 direcții. Deoarece acesta este un mod cu 4 direcții, vom avea nevoie de douăsprezece LED-uri și patru combinații de trei LED-uri. Codul este scris astfel încât, dacă o combinație arată o lumină verde, toate celelalte combinații vor arăta lumina roșie. Dacă un semnal se schimbă de la verde la galben sau roșu la galben, o altă combinație de LED-uri va arăta, de asemenea, o tranzacție de la roșu la galben sau respectiv galben la roșu.

Toate acestea se vor face cu o întârziere între trecerea semnalelor. De exemplu, un LED va rămâne verde aproape cincisprezece secunde, un LED va rămâne galben aproape două secunde. Durata LED-ului roșu depinde de durata LED-ului verde. Înseamnă că dacă un LED este verde timp de cincisprezece secunde, toate celelalte LED-uri roșii vor rămâne aprinse timp de cincisprezece secunde.

Pasul 4: Realizarea circuitului

Acum, așa cum știm funcționarea principală a componentelor, să mergem mai departe și să începem să asamblăm componentele pentru a realiza circuitul. Parcurgeți pașii următori pentru a conecta corect toate componentele în panoul de verificare.

  1. În primul rând, luați toate LED-urile și conectați-le în panou în ordinea corectă ca roșu, galben și verde.
  2. Faceți o conexiune comună a bazelor tuturor LED-urilor. Este mai bine să conectați un rezistor de 220 ohmi la terminalul pozitiv al LED-ului.
  3. Acum conectați firele de conectare în consecință.
  4. Acum conectați LED-urile la Arduino așa cum se arată în schema de circuit de mai jos. LED-1, LED-2 până la LED-12 vor fi conectate la pin1, pin2 până la pin12 de pe placa Arduino Uno.
  5. Încărcați codul în Arduino Uno și alimentați-l utilizând un laptop sau adaptorul CA la CC.
  6. Circuitul va arăta ca imaginea prezentată mai jos:

    Diagrama circuitului

Pasul 5: Noțiuni introductive despre Arduino

Dacă nu sunteți familiarizați cu Arduino IDE înainte, nu vă faceți griji, deoarece mai jos puteți vedea pași clari de ardere a codului pe placa microcontrolerului utilizând Arduino IDE. Puteți descărca cea mai recentă versiune a Arduino IDE de la aici și urmați pașii menționați mai jos:

1). Când placa Arduino este conectată la computer, deschideți „Panoul de control” și faceți clic pe „Hardware și sunet”. Apoi faceți clic pe „Dispozitive și imprimante”. Găsiți numele portului la care este conectată placa Arduino. În cazul meu, este „COM14”, dar poate fi diferit pe computer.

Găsirea portului

2). Acum deschideți IDE-ul Arduino. Din Instrumente, setați placa Arduino la Arduino / Genuino UNO.

Placă de setare

3). Din același meniu Instrument, setați numărul portului pe care l-ați văzut în panoul de control.

Setarea portului

4). Descărcați codul atașat mai jos și copiați-l în IDE. Pentru a încărca codul, faceți clic pe butonul de încărcare.

Încărcare

Puteți descărca codul prin făcând clic aici.

Pasul 6: Cod

Codul este bine comentat și auto-explicativ, dar totuși, o parte din cod este explicată pe scurt mai jos.

1. La început sunt denumiți toți pinii, care vor fi conectați ulterior la Arduino.

int led1 = 1; // lumină roșie 1 int led2 = 2; // lumină galbenă 1 int led3 = 3; // lumină verde 1 int led4 = 4; // lumină roșie 2 int led5 = 5; // lumină galbenă 2 int led6 = 6; // lumină verde 2 int led7 = 7; // lumină roșie 3 int led8 = 8; // lumină galbenă 3 int led9 = 9; // lumină verde 3 int led10 = 10; // lumină roșie 4 int led11 = 11; // lumină galbenă 4 int led12 = 12; // lumină verde 4

2. configurare nulă () este o funcție în care declarăm că toți pinii plăcii Arduino sunt folosiți ca INPUT sau OUTPUT. Baud Rate este setat și în această funcție. Baud Rate este viteza de comunicație în biți pe secundă prin care placa de microcontroler comunică cu dispozitivele externe. Această funcție rulează o singură dată când este apăsat butonul de activare al plăcii microcontrolerului.

void setup () {Serial.begin (9600;) // Baud Rate este setat la 9600 pinMode (led1, OUTPUT); // Toți pinii conectați la LED-uri sunt setați ca OUTPUT pinMode (led2, OUTPUT); pinMode (led3, OUTPUT); pinMode (led4, OUTPUT); pinMode (led5, OUTPUT); pinMode (led6, OUTPUT); pinMode (led7, OUTPUT); pinMode (led8, OUTPUT); pinMode (led9, OUTPUT); pinMode (led10, OUTPUT); pinMode (led11, OUTPUT); pinMode (led12, OUTPUT); }

3. bucla nulă este o funcție care rulează în mod repetat într-o buclă. În această funcție, vom codifica întreaga procedură prin care microcontrolerul va controla LED-urile externe. O mică parte din cod este prezentată mai jos. Aici lumina verde a primei laturi este aprinsă și toate celelalte părți au lumină roșie aprinsă. Aceste lumini vor rămâne în această stare timp de 15 secunde. După 15 secunde, lumina galbenă a primei și celei de-a doua părți se va aprinde pe celelalte două părți, iar lumina roșie va rămâne aprinsă. După o întârziere de două secunde, prima parte va avea lumina roșie aprinsă și a doua parte va avea lumina verde aprinsă. Acest lucru se va întâmpla până când toate cele patru părți vor avea aprinse luminile verzi, la rândul lor și apoi bucla se va repeta.

digitalWrite (led1, LOW); // Lumina roșie a primei fețe este oprită digitalWrite (led2, LOW); // lumina galbenă f prima parte este dezactivată digitalWrite (led3, HIGH); // Lumina verde a primei fețe este pe digitalWrite (led4, HIGH); // Lumina roșie din partea seconf este pe digitalWrite (led5, LOW); // lumina galbenă a celei de-a doua părți este oprită digitalWrite (led6, LOW); // lumina verde a doua latură este dezactivată digitalWrite (led7, HIGH); // Lumina roșie a celei de-a treia părți este pe digitalWrite (led8, LOW); // lumina galbenă a celei de-a treia părți este dezactivată digitalWrite (led9, LOW); // lumina verde a celei de-a treia părți este dezactivată digitalWrite (led10, HIGH); // lumina roșie a celei de-a patra părți este pe digitalWrite (led11, LOW); // lumina galbenă a celei de-a patra părți este dezactivată digitalWrite (led12, LOW); // lumina verde a celei de-a patra părți este oprită întârziere (15000); // din cauza unei întârzieri de 15 secunde, lumina verde a primei fețe și luminile roșii ale celorlalte trei fețe vor rămâne aprinse timp de 15 secunde digitalWrite (led1, LOW); // lumina roșie a primei fețe este oprită digitalWrite (led2, HIGH); // Lumina galbenă a primei fețe este pe digitalWrite (led3, LOW); // lumina verde a primei fețe este dezactivată digitalWrite (led4, LOW); // lumina roșie a celei de-a doua părți este oprită digitalWrite (led5, HIGH); // Lumina galbenă a celei de-a doua fețe este pe digitalWrite (led6, LOW); // lumina verde a doua latură este dezactivată digitalWrite (led7, HIGH); // Lumina roșie a celei de-a treia părți este pe digitalWrite (led8, LOW); // lumina galbenă a celei de-a treia părți este dezactivată digitalWrite (led9, LOW); // lumina verde a celei de-a treia părți este dezactivată digitalWrite (led10, HIGH); // lumina roșie a celei de-a patra părți este pe digitalWrite (led11, LOW); // lumina galbenă a celei de-a patra părți este dezactivată digitalWrite (led12, LOW); // lumina verde a celei de-a patra părți este off întârziere (2000); // din cauza unei întârzieri de 2 secunde, lumina galbenă a primei și a celei de-a doua părți va rămâne aprinsă

Deci, aceasta a fost întreaga procedură pentru a face un semnal de circulație în 4 direcții. Acum, vă puteți bucura să-l faceți pentru învățare sau pentru un proiect școlar.