
Taula de continguts:
2025 Autora: John Day | [email protected]. Última modificació: 2025-01-23 14:37

Hey allà! Vaig a mostrar-vos com programar un semàfor per a vianants per a Arduino en C ++ amb una màquina d'estats finits mitjançant les eines YAKINDU Statechart Tools. Això demostrarà la potència de les màquines estatals i es pot utilitzar com a pla per a futurs projectes.
Subministraments
Només necessiteu un Arduino, alguns polsadors, LEDs, jumper i resistències.
Maquinari
- 2 polsadors
- 2 semàfors o podeu utilitzar LEDs amb resistències de 220 Ohm
- 2x 10k ohm resistències
- Taula de pa
- Saltador
- Arduino Uno / Mega (o qualsevol altre, que tingui almenys 8 GPIO)
Programari
- Eines de gràfics d'estat de YAKINDU
- IDE Eclipse C ++ per a Arduino
Pas 1: definiu com funciona: semàfor per a vianants
Al principi, hem d’especificar com ha de funcionar el semàfor per als vianants. He intentat resumir els punts bàsics:
- S’utilitzen dos semàfors: un per als cotxes i l’altre per als vianants
- El semàfor es pot encendre mitjançant un botó
- Els vianants poden sol·licitar creuar el carrer prement un botó
- El semàfor apagat s’indica fent parpellejar els dos LED grocs
- Després d’encendre’s, el semàfor espera 10 segons en mode segur
- Després del mode segur, els cotxes sempre tenen una fase verda fins que un vianant comença una sol·licitud
- La petició de vianants per creuar s’indica mitjançant un LED groc alternant
A més, hi ha alguns esdeveniments temporals en funció del funcionament d'un semàfor.
Pas 2: Construeix el circuit

Comencem a configurar el circuit. En el meu exemple, com podeu veure a la imatge de vista prèvia, he utilitzat un Arduino Mega 2560, però tots els altres Arduino amb almenys vuit GPIO haurien d’estar bé. A més, he comprat alguns semàfors de 5V a Amazon. Només cal que busqueu el semàfor Arduino. En cas contrari, només podeu utilitzar sis LED diferents. A més, necessiteu dos polsadors i dues resistències de 10 k Ohm.
Els tres LEDs esquerres s’utilitzen per al trànsit de vehicles i els tres LEDs drets per als vianants, on el groc pot indicar una sol·licitud.
Pas 3: creació de la màquina d'estats

Per tant, com podeu veure, hi ha dos estats principals amb membres compostos: estat activat i estat desactivat. Podeu canviar entre ambdós estats mitjançant l’esdeveniment OnOff, que es connecta al botó ON / OFF. En l'estat inicial, l'estat apagat, els dos LED grocs comencen a parpellejar cada segon. Un cop encès el semàfor, comença al Safestate. Al cap de 10 segons es controlarà el comportament típic dels semàfors. El LED vermell i groc s’encendrà a l’estat StreetPrepare i el semàfor es posarà de color verd al cap de 2 segons més. A partir d’ara, la màquina d’estat espera l’esdeveniment pedestrianRequest, que es connecta al segon botó. Després d’enviar l’esdeveniment, la petició s’indicarà alternant el LED groc cada segon a l’estat de PedWating. 7 segons més tard, el semàfor es canviarà primer al groc i després al vermell fins que els vianants obtinguin el senyal d’anar a l’estat PedestrianGreen. Després d'això, s'activa el PedestrianRed i el cicle es repeteix. Això només es pot interrompre apagant de nou el semàfor.
Pas 4: Execució de l'exemple

Pas 5: Codi generat C ++
El codi C ++ generat és un cas clàssic de commutació per gestionar la lògica de la màquina d’estats. Aquest és només un fragment de codi de la seva aparença:
void TrafficLightCtrl:: runCycle () {clearOutEvents (); for (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {switch (stateConfVector [stateConfVectorPosition]) {case main_region_on_r1_StreetGreen: {main_region_on_r1_StreetGreen_rea; trencar; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (true); trencar; } per defecte: trencar; } clearInEvents (); }
Pas 6: obteniu l'exemple
Tot l'exemple està preparat per compilar-se i executar-se. Ve amb les eines YAKINDU Statechart Tools, que són gratuïtes per a usos no comercials. Després de descarregar-lo, podeu importar l'exemple directament a l'eina:
Fitxer -> Nou -> Exemple -> Exemples de gràfics d'estat de YAKINDU -> Següent -> Semàfor (C ++) per a Arduino
> AQUÍ podeu descarregar YAKINDU Statechart Tools <<
Podeu començar amb una prova de 30 dies. Després, heu d'obtenir una llicència, que és gratuïta per a usos no comercials.
Recomanat:
Semàfor Arduino: 3 passos (amb imatges)

Semàfor Arduino: aquest instructable es deriva de: Arduino-Traffic-Light-Simulator He utilitzat el dibuix d’aquest instructable per crear un semàfor separat. Vaig fer els canvis següents: els forats dels LED són més petits, per als LED de 5 mm (en lloc dels LED de 10 mm)
Projecte semàfor Arduino [amb pas de vianants]: 3 passos
![Projecte semàfor Arduino [amb pas de vianants]: 3 passos Projecte semàfor Arduino [amb pas de vianants]: 3 passos](https://i.howwhatproduce.com/images/003/image-6999-j.webp)
Projecte semàfor Arduino [amb pas de vianants]: si busqueu quelcom fàcil, senzill i alhora que vulgueu impressionar a tothom amb el vostre Arduino, el projecte semàfor és probablement la millor opció, especialment quan sou un principiant al món. d’Arduino. Primer veurem ho
State Machine i multitarea a Arduino amb expansors SPI: 3 passos

State Machine i multitasca a Arduino amb expansors SPI: la setmana passada demanava que creés un sistema per pilotar focs artificials amb un arduino. Necessitava unes 64 sortides per controlar els focs. Una manera de fer-ho és fer servir expansors IC. Així doncs, hi ha dues solucions disponibles: - un expansor I2C, però necessita inversor quan
Simulació intel·ligent de semàfor amb DragonBoard 410c: 7 passos (amb imatges)

Simulació intel·ligent de semàfor amb DragonBoard 410c: | MATERIALS: MDF 1,20 Mts. x 1,20 Mts.8 LED: · 2 verds · 2 groc · 2 vermells · 2 Blancs Una peça de cartró.Dragon Board 410c BladeWiresSilicone Silicone GunToy carProtoboardPush buttonInfrare
Un semafor de patrons controlats per veu, en braille: 4 passos (amb imatges)

Un semafor de patrons controlats per veu, en braille: "Lord Vetinari es posava a la finestra mirant la torre del semàfor a l'altra banda del riu. Les vuit persianes grans que tenien davant d'ell parpellejaven amb furia: negre, blanc, negre, blanc, negre, blanc i hellip; La informació volava cap al