Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-23 15:10
Përshëndetje! Unë do t'ju tregoj se si të programoni një semafor për këmbësorët për Arduino në C ++ me një makinë me gjendje të fundme duke përdorur Mjetet YAKINDU Statechart. Kjo do të demonstrojë fuqinë e makinave shtetërore dhe mund të përdoret si një plan për projekte të mëtejshme.
Furnizimet
Ju duhet vetëm një Arduino, disa butona, LED, bluzë dhe rezistorë.
Hardware
- 2x buton me buton
- 2x Dritat e trafikut ose mund të përdorni LED me rezistorë 220 Ohm
- Rezistenca 2x 10k Ohm
- Breadboard
- Kërcyes
- Arduino Uno/Mega (ose ndonjë tjetër, që ka marrë të paktën 8 GPIO)
Softuer
- Mjetet e hartës shtetërore YAKINDU
- Eclipse C ++ IDE për Arduino
Hapi 1: Përcaktoni se si funksionon: Semafori i këmbësorëve
Në fillim, duhet të specifikojmë se si duhet të funksionojë semafori i këmbësorëve. Unë jam përpjekur të përmbledh pikat kryesore:
- Përdoren dy semaforë - njëri për makinat, tjetri për këmbësorët
- Drita e trafikut mund të ndizet duke përdorur një buton
- Këmbësori mund të kërkojë kalimin e rrugës duke shtypur një buton
- Semafori i fikur tregohet duke ndezur të dyja LED -të e verdhë
- Pas ndezjes, semafori pret për 10 sekonda në mënyrë të sigurt
- Pas modalitetit të sigurt, makinat gjithmonë kanë një fazë të gjelbër derisa një këmbësor të fillojë një kërkesë
- Kërkesa e këmbësorëve për kalim tregohet me ndërrimin e LED të verdhë
Për më tepër, ka disa ngjarje kohore në varësi të mënyrës se si funksionon një semafor.
Hapi 2: Ndërtoni qarkun
Le të fillojmë të vendosim qarkun. Në shembullin tim, siç mund ta shihni në imazhin paraprak, unë kam përdorur një Arduino Mega 2560, por çdo Arduino tjetër me të paktën tetë GPIO duhet të jetë mirë. Për më tepër, kam blerë disa semaforë 5V në Amazon. Thjesht kërkoni për Semaforin Arduino. Përndryshe, thjesht mund të përdorni gjashtë LED të ndryshëm. Për më tepër, keni nevojë për dy butona shtytës dhe dy rezistorë 10k Ohm.
Tre LED të majtë përdoren për trafikun e makinave dhe tre LED të djathtë për këmbësorët, ku e verdha mund të tregojë një kërkesë.
Hapi 3: Krijimi i Makinës Shtetërore
Pra, siç mund ta shihni, ekzistojnë dy gjendje kryesore me anëtarë të përbërë - gjendja e ndezur dhe fikja. Mund të kaloni midis të dy gjendjeve duke përdorur ngjarjen onOff, e cila lidhet me butonin ON/OFF. Në gjendjen fillestare, gjendja e fikur, të dy LED -të e verdhë fillojnë të pulsojnë çdo sekondë. Pasi të jetë ndezur semafori, ai fillon në Safestate. Pas 10 sekondash do të trajtohet sjellja tipike e semaforëve. LED i kuq dhe i verdhë do të ndizet në gjendjen StreetPrepare dhe semafori ndizet i gjelbër pas 2 sekondash të tjera. Tani e tutje, makina shtetërore po pret ngjarjen e kërkimit të këmbësorëve, e cila lidhet me butonin e dytë. Pas dërgimit të ngjarjes, kërkesa do të tregohet duke fikur LED -in e verdhë çdo sekondë në gjendjen PedWating. 7 sekonda më vonë semafori do të kalojë në të verdhë së pari dhe më pas në të kuq derisa këmbësorët të marrin sinjalin për të shkuar në gjendjen e Gjelbër të këmbësorëve. Pas kësaj, PedestrianRed aktivizohet dhe cikli përsëritet. Kjo mund të ndërpritet vetëm duke fikur sërish semaforin.
Hapi 4: Drejtimi i Shembullit
Hapi 5: Kodi i gjeneruar C ++
Kodi i gjeneruar C ++ është një rast klasik switch-i për të trajtuar logjikën e makinës shtetërore. Ky është vetëm një pjesë e kodit se si duket:
void TrafficLightCtrl:: runCycle () {clearOutEvents (); per (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {kalimi (stateConfVector [stateConfVectorPosition]) {rast main_region_on_r1_StreetGreen: {main_region_on_r1_StreetGreen_react (vërtetë); pushim; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (true); pushim; } parazgjedhje: pushim; } clearInEvents (); }
Hapi 6: Merrni Shembullin
I gjithë shembulli është gati për përpilim dhe ekzekutim. Ajo vjen me YAKINDU Statechart Tools, e cila është falas për përdorim jo-komercial. Pas shkarkimit, mund ta importoni shembullin direkt në mjet:
Skedar -> E Re -> Shembull -> Shembuj të Tabelave të YAKINDU -> Tjetra -> Drita e Trafikut (C ++) për Arduino
> KETU mund të shkarkoni YAKINDU Toolchart Tools <<
Mund të filloni me një provë 30 -ditore. Më pas, duhet të merrni një licencë, e cila është falas për përdorim jo-komercial!
Recommended:
Makina votuese biometrike e bazuar në gjurmët e gishtave duke përdorur Arduino: 4 hapa (me fotografi)
Makina e votimit biometrike e bazuar në gjurmët e gishtërinjve duke përdorur Arduino: Ne të gjithë jemi në dijeni të makinës elektronike ekzistuese të votimit, ku përdoruesi duhet të shtypë një buton për të votuar. Por këto makina janë kritikuar për kalitje që në fillim. Kështu që qeveria po planifikon të prezantojë një bazë të gjurmëve të gishtërinjve
Roboti Arduino Otto me makinë shtetërore: 4 hapa
Në këtë projekt, dua t'ju tregoj një mënyrë programimi të Robotit Otto, i cili është një robot DIY i bazuar në Arduino. Duke përdorur YAKINDU Toolchart Tools (falas për jo-komerciale) ne lehtë mund të përdorim makina shtetërore për të modeluar grafikisht sjelljen
Arduino HMI Duke përdorur Makinat Shtetërore: 9 Hapa
Arduino HMI Duke përdorur Makinat Shtetërore: Në këtë Instructable, unë do t'ju tregoj se si të përdorni YAKINDU Statechart Tools për të realizuar një HMI të thjeshtë dhe të zgjerueshëm duke përdorur një Mburojë të tastierës LCD 16x2 për Arduino. Makinat e Gjendjes së Fundit (FSM) janë një model dizajni i fuqishëm për t'u zhvilluar Makinë komplekse njerëzore
Makina Shtetërore dhe Multitasking në Arduino Me Zgjerues SPI: 3 Hapa
Machine State dhe Multitasking në Arduino Me SPI Expanders: Javën e kaluar, unë po kërkoja të krijoja një sistem për të pilotuar fishekzjarre me një arduino. Duheshin rreth 64 dalje për të kontrolluar zjarret. Një mënyrë për ta bërë këtë është përdorimi i zgjeruesve të IC. Pra, janë të disponueshme 2 zgjidhje:- një zgjerues I2C por ka nevojë për inverter kur po
Arduino PLC 32 I/O+Makinë shtetërore+SCADA ose HMI: 8 hapa
Arduino PLC 32 I/O+Machine State+SCADA ose HMI: Shumë mënyra për të programuar, kontrolluar dhe mbikëqyrur një sistem industrial me arduino