Përmbajtje:

Makina shtetërore në Arduino - një semafor këmbësorësh: 6 hapa (me fotografi)
Makina shtetërore në Arduino - një semafor këmbësorësh: 6 hapa (me fotografi)

Video: Makina shtetërore në Arduino - një semafor këmbësorësh: 6 hapa (me fotografi)

Video: Makina shtetërore në Arduino - një semafor këmbësorësh: 6 hapa (me fotografi)
Video: Arduino Project |Interpretimi i nje semafori |Shkolla Profesionale Lushnje 2024, Korrik
Anonim
Makina Shtetërore në Arduino - një semafor këmbësorësh
Makina Shtetërore në Arduino - një semafor këmbësorësh

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

Ndërtoni qarkun
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

Krijimi i Makinës Shtetërore
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: