Com fer un controlador de semàfors basat en Arduino?

Els semàfors són dispositius de senyalització que s’utilitzen per controlar el flux de trànsit a les interseccions d’una carretera, passos de vianants i altres llocs. És una combinació de tres colors de llum que són el vermell, el groc i el verd. El llum vermell indica a les persones que s’aturin, el groc indica que es prepari o engegui el motor si està apagat i el llum verd indica que està clar que cal seguir endavant.



Semàfors

En aquest projecte, farem un sistema de senyal de trànsit de 4 vies mitjançant un microcontrolador. Cremarem un Codi C a la placa Arduino Uno per dir-li com encendre i apagar els LED perquè es pugui aconseguir el moment perfecte de commutació en el procés de senyalització. S'utilitzaran 4 combinacions de 4 LEDs que es col·locaran a la taula de treball per tal de provar-les.



Com fer senyals de trànsit de quatre vies amb Seeeduino v4.2?

Els senyals de trànsit són el més important que s’instal·la a les carreteres per mantenir un flux de trànsit suau i constant i minimitzar la possibilitat d’accidents. Podem fer aquest projecte en una petita taula de treball. Recopilem informació sobre aquest projecte i comencem a treballar.



Pas 1: recollida dels components

El millor enfocament per iniciar qualsevol projecte és fer una llista de components complets al començament i fer un breu estudi de cada component. Això ens ajuda a evitar els inconvenients enmig del projecte. A continuació es mostra una llista completa de tots els components utilitzats en aquest projecte.



  • Seeeduino V4.2
  • Jumper Wires
  • LED (4xverd, 4xgroc, vermell 4x)
  • Adaptador de 12V CA a CC

Pas 2: estudiar els components

Ara, ja que coneixem el resum del nostre projecte i també tenim una llista completa de tots els components, anem a fer un pas endavant i fem un breu estudi dels components que utilitzarem.

Seeeduino v4.2 és una de les millors plaques compatibles Arduino del món basada en el microcontrolador Atmega 328 MCU. perquè és fàcil d’utilitzar, és més estable i té un aspecte millor que molts altres taulers. Es basa en el carregador d’Arduino. té un ATMEGA16U2 com a convertidor UART-a-USB perquè es pot utilitzar com a xip FTDI. es connecta a l'ordinador mitjançant un cable micro USB que generalment s'anomena cable Android. També es pot utilitzar una presa de corrent continu per alimentar la placa. la potència d'entrada ha de ser de 7V a 15V.

Seeeduino



A Taula de pa és un dispositiu sense soldadura. S'utilitza per fabricar i provar prototips de circuits i dissenys electrònics temporals. La majoria dels components electrònics es connecten simplement a una placa de taula només inserint els pins a la taula de treball. Es col·loca una tira de metall pels forats de la tauleta i els forats es connecten de manera específica. Les connexions dels forats es mostren al diagrama següent:

Taula de pa

Pas 3: Principi de treball

Anem a fer una breu introducció al principi de funcionament del projecte de senyal de trànsit de quatre vies. Com que es tracta d'un sistema de quatre vies, necessitarem dotze LED i quatre combinacions de tres LED. El codi està escrit de manera que si una combinació mostra llum verda, totes les altres combinacions mostraran llum vermella. Si un senyal canvia de verd a groc o vermell a groc, una altra combinació dels LED també mostrarà una transacció de vermell a groc o groc a vermell respectivament.

Tot això es farà amb un retard de temps entre la transició dels senyals. Per exemple, un LED es mantindrà verd durant gairebé quinze segons i un LED es mantindrà groc durant gairebé dos segons. La durada del LED vermell depèn de la durada del LED verd. Vol dir que si un LED està verd durant quinze segons, tots els altres LED vermells romandran encesos durant quinze segons.

Pas 4: Creació del circuit

Ara, ja que coneixem el funcionament principal dels components, anem a avançar i comencem a muntar els components per fer el circuit. Seguiu els passos següents per connectar tots els components correctament al tauler de control.

  1. Primer de tot, agafeu tots els LEDs i connecteu-los a la tauleta d’ordres en l’ordre correcte en vermell, groc i verd.
  2. Feu una connexió comuna de les bases de tots els LED. És millor connectar una resistència de 220 ohms al terminal positiu del LED.
  3. Ara connecteu els cables de connexió en conseqüència.
  4. Ara connecteu els LED a l'Arduino tal com es mostra al diagrama de circuits següent. El LED-1, el LED-2 fins al LED-12 es connectaran al pin1, pin2 fins al pin12 de la placa Arduino Uno.
  5. Pengeu el codi a l'Arduino Uno i engegueu-lo mitjançant un portàtil o l'adaptador de CA a CC.
  6. El circuit tindrà l’aspecte de la imatge que es mostra a continuació:

    Esquema de connexions

Pas 5: Introducció a Arduino

Si abans no esteu familiaritzat amb Arduino IDE, no us preocupeu, perquè a continuació podeu veure passos clars de gravació de codi a la placa del microcontrolador mitjançant Arduino IDE. Podeu descarregar la versió més recent d'Arduino IDE des de aquí i seguiu els passos esmentats a continuació:

1). Quan la placa Arduino estigui connectada al vostre PC, obriu el 'Tauler de control' i feu clic a 'Maquinari i so'. A continuació, feu clic a 'Dispositius i impressores'. Cerqueu el nom del port al qual està connectada la vostra placa Arduino. En el meu cas, és 'COM14', però pot ser diferent al vostre PC.

Buscant Port

2). Ara obriu l'IDE Arduino. A Eines, configureu la placa Arduino a Arduino / Genuí UN.

Taula de configuració

3). Des del mateix menú d'eines, configureu el número de port que heu vist al tauler de control.

Configuració del port

4). Baixeu-vos el codi adjunt a continuació i copieu-lo al vostre IDE. Per carregar el codi, feu clic al botó de càrrega.

Pujar

Podeu descarregar el codi per fent clic aquí.

Pas 6: Codi

El codi està ben comentat i s’explica per si mateix, però tot i així, alguna part del codi s’explica breument a continuació.

1. A l’inici, s’anomenen tots els pins, que es connectaran a Arduino més endavant.

int led1 = 1; // llum vermella 1 int led2 = 2; // llum groga 1 int led3 = 3; // llum verda 1 int led4 = 4; // llum vermella 2 int led5 = 5; // llum groga 2 int led6 = 6; // llum verda 2 int led7 = 7; // llum vermella 3 int led8 = 8; // llum groga 3 int led9 = 9; // llum verda 3 int led10 = 10; // llum vermella 4 int led11 = 11; // llum groga 4 int led12 = 12; // llum verda 4

2. configuració nul·la () és una funció en què declarem que tots els pins de la placa Arduino s’utilitzaran com a INPUT o OUTPUT. La funció Baud Rate també es defineix en aquesta funció. Baud Rate és la velocitat de comunicació en bits per segon mitjançant la qual la placa de microcontrolador es comunica amb els dispositius externs. Aquesta funció només s'executa una vegada quan es prem el botó d'activació de la placa de microcontroladors.

void setup () {Serial.begin (9600;) // Baud Rate s’estableix en 9600 pinMode (led1, OUTPUT); // Tots els pins connectats als LED s’estableixen com a 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. bucle buit és una funció que s'executa repetidament en un bucle. En aquesta funció, codificarem tot el procediment pel qual el microcontrolador controlarà els LED externs. A continuació es mostra un petit fragment de codi. Aquí s’encén la llum verda del primer costat i la llum vermella de tots els altres costats. Aquests llums romandran en aquest estat durant 15 segons. Després de 15 segons, la llum groga del primer i del segon costat s’encendrà dels altres dos costats i quedarà la llum vermella encesa. Després d’un retard de dos segons, la primera cara tindrà la llum vermella encesa i la segona cara la llum verda. Això passarà fins que els quatre costats tinguin els llums verds engegats, al seu torn i després el bucle es repeteixi.

digitalWrite (led1, BAIX); // La llum vermella del primer costat està apagada digitalWrite (led2, LOW); // llum groga f primer costat està apagat digitalWrite (led3, HIGH); // La llum verda del primer costat es troba a digitalWrite (led4, HIGH); // La llum vermella del costat seconf està a digitalWrite (led5, LOW); // la llum groga del segon costat està apagada digitalWrite (led6, LOW); // la llum verda del segon costat està apagada digitalWrite (led7, HIGH); // La llum vermella del tercer costat està a digitalWrite (led8, LOW); // la llum groga del tercer costat està apagada digitalWrite (led9, LOW); // la llum verda del tercer costat està apagada digitalWrite (led10, HIGH); // la llum vermella del quart costat està a digitalWrite (led11, LOW); // la llum groga del quart costat està apagada digitalWrite (led12, LOW); // la llum verda del quart costat està fora del retard (15000); // a causa d'un retard de 15 segons, el llum verd del primer costat i els llums vermells dels altres tres costats romandran engegats durant 15 segons digitalWrite (led1, LOW); // la llum vermella del primer costat està apagada digitalWrite (led2, HIGH); // La llum groga del primer costat apareix a digitalWrite (led3, LOW); // la llum verda del primer costat està apagada digitalWrite (led4, LOW); // la llum vermella del segon costat està apagada digitalWrite (led5, HIGH); // La llum groga del segon costat està a digitalWrite (led6, LOW); // la llum verda del segon costat està apagada digitalWrite (led7, HIGH); // La llum vermella del tercer costat està a digitalWrite (led8, LOW); // la llum groga del tercer costat està apagada digitalWrite (led9, LOW); // la llum verda del tercer costat està apagada digitalWrite (led10, HIGH); // la llum vermella del quart costat està a digitalWrite (led11, LOW); // la llum groga del quart costat està apagada digitalWrite (led12, LOW); // la llum verda del quart costat està fora de retard (2000); // a causa d'un retard de 2 segons, la llum groga del primer i del segon costat seguirà engegada

Per tant, aquest va ser tot el procediment per fer un senyal de trànsit de 4 direccions. Ara, podeu gaudir-ne per al vostre aprenentatge o per a un projecte escolar.