Cuprins:
- Provizii
- Pasul 1: definiți cum funcționează: semafor pentru pietoni
- Pasul 2: Construiți circuitul
- Pasul 3: Crearea mașinii de stat
- Pasul 4: Rularea exemplului
- Pasul 5: Cod generat C ++
- Pasul 6: Obțineți exemplul
Video: State Machine pe Arduino - un semafor pietonal: 6 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Hei, acolo! Vă voi arăta cum să programați un semafor pietonal pentru Arduino în C ++ cu o mașină de stare finită folosind YAKINDU Statechart Tools. Acest lucru va demonstra puterea mașinilor de stat și poate fi folosit ca model pentru proiecte ulterioare.
Provizii
Ai nevoie doar de un Arduino, câteva butoane, LED-uri, jumper și rezistențe.
Hardware
- 2x Buton
- 2 semafoare sau puteți utiliza LED-uri cu rezistențe de 220 Ohm
- 2x rezistențe de 10k Ohm
- Pană de pâine
- Săritor
- Arduino Uno / Mega (sau oricare altul, care are cel puțin 8 GPIO)
Software
- Instrumente YAKINDU Statechart
- Eclipse C ++ IDE pentru Arduino
Pasul 1: definiți cum funcționează: semafor pentru pietoni
La început, trebuie să specificăm cum ar trebui să funcționeze semaforul pentru pietoni. Am încercat să rezum punctele glonț:
- Se folosesc două semafoare - unul pentru mașini, celălalt pentru pietoni
- Semaforul poate fi aprins folosind un buton
- Pietonii pot solicita traversarea străzii apăsând un buton
- Semaforul oprit este indicat prin clipirea ambelor LED-uri galbene
- După aprindere, semaforul așteaptă 10 secunde în modul sigur
- După modul de siguranță, mașinile au întotdeauna o fază verde până când un pieton începe o cerere
- Cererea de trecere a pietonilor este indicată de un LED galben alternativ
În plus, există unele evenimente temporale, în funcție de modul în care funcționează un semafor.
Pasul 2: Construiți circuitul
Să începem să configurăm circuitul. În exemplul meu, după cum puteți vedea pe imaginea de previzualizare, am folosit un Arduino Mega 2560, dar orice alt Arduino cu cel puțin opt GPIO ar trebui să fie bine. În plus, am cumpărat câteva semafoare de 5V de la Amazon. Căutați doar semafor Arduino. În caz contrar, puteți utiliza pur și simplu șase LED-uri diferite. Mai mult, aveți nevoie de două butoane și două rezistențe de 10 k Ohm.
Cele trei LED-uri din stânga sunt utilizate pentru traficul auto și cele trei LED-uri din dreapta pentru pietoni, unde cel galben poate indica o solicitare.
Pasul 3: Crearea mașinii de stat
Deci, după cum puteți vedea, există două stări principale cu membri compuși - state on și state off. Puteți comuta între ambele stări utilizând evenimentul onOff, care este conectat la butonul ON / OFF. În starea inițială, starea oprită, ambele LED-uri galbene încep să clipească în fiecare secundă. Odată ce semaforul a fost aprins, acesta începe în Safestate. După 10 secunde va fi gestionat comportamentul tipic al semaforelor. LED-ul roșu și galben va fi aprins în starea StreetPrepare, iar semaforul devine verde după încă 2 secunde. De acum înainte, mașina de stat așteaptă evenimentul pedestrianRequest, care este conectat la al doilea buton. După trimiterea evenimentului, cererea va fi indicată prin comutarea LED-ului galben în fiecare secundă în starea PedWating. 7 secunde mai târziu, semaforul va fi trecut mai întâi în galben și apoi în roșu până când pietonii primesc semnalul pentru a merge în starea PedestrianGreen. După aceasta, PedestrianRed este activat și ciclul se repetă. Acest lucru poate fi întrerupt doar prin oprirea din nou a semaforului.
Pasul 4: Rularea exemplului
Pasul 5: Cod generat C ++
Codul C ++ generat este un caz de comutare clasic pentru a gestiona logica mașinii de stare. Acesta este doar un fragment de cod despre cum arată:
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; pauză; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (adevărat); pauză; } implicit: break; } clearInEvents (); }
Pasul 6: Obțineți exemplul
Întregul exemplu este gata pentru a compila și rula. Vine cu YAKINDU Statechart Tools, care este gratuit pentru utilizare necomercială. După descărcare, puteți importa exemplul direct în instrument:
Fișier -> Nou -> Exemplu -> Exemple de diagrame YAKINDU -> Următor -> Semafor (C ++) pentru Arduino
> AICI puteți descărca YAKINDU Statechart Tools <<
Puteți începe cu o perioadă de încercare de 30 de zile. Ulterior, trebuie să obțineți o licență, care este gratuită pentru utilizare necomercială!
Recomandat:
Semafor de zgomot - DIY 3D imprimat: 8 pași (cu imagini)
Semafor de zgomot - DIY 3D imprimat: Toți oamenii doresc să lucreze în tăcere și este important să aveți un mediu de lucru bun. Tăcerea duce la o muncă eficientă. Am făcut acest proiect pentru a ajunge la această propunere. Semaforul de zgomot constă dintr-un „semafor” care controlează dB
Semafor Arduino: 3 pași (cu imagini)
Semafor Arduino: Acest instructable este derivat din: Arduino-Traffic-Light-Simulator Am folosit desenul din acest instructable, pentru a crea un semafor separat. Am făcut următoarele modificări: găurile pentru LED-uri sunt mai mici, pentru LED-urile de 5 mm (în loc de LED-urile de 10 mm)
State Machine și Multitasking pe Arduino cu expansori SPI: 3 pași
Mașină de stat și multitasking pe Arduino Cu expansori SPI: Săptămâna trecută, am cerut să creez un sistem de pilotare a artificiilor cu un arduino. Avea nevoie de aproximativ 64 de ieșiri pentru a controla incendiile. O modalitate de a face acest lucru este să folosiți extensoare IC. Așadar, sunt disponibile 2 soluții: - un expansor I2C, dar are nevoie de invertor când poți
Semafor Arduino: 8 pași (cu imagini)
Semafor Arduino: Acest proiect a fost realizat cu LED-uri de 5 mm și hardware de montare cu LED T1-3 / 4 Clear Standard pentru o vizualizare mai bună, și astfel folosind 3 LED-uri pentru a afișa separat culorile sale Roșu, Galben și amp; Verde, respectiv
Sistem de semafor cu 4 căi folosind 5 Arduino și 5 module wireless NRF24L01: 7 pași (cu imagini)
Sistem cu semafor cu 4 căi folosind 5 module Arduino și 5 module wireless NRF24L01: în urmă cu puțin timp am creat un instructabil care detaliază o singură pereche de semafoare pe o placă de calcul. De asemenea, am creat un alt instructabil care arată cadrul de bază pentru utilizarea unui modul wireless NRF24L01 mă fac să mă gândesc! Sunt destul de multe