Talaan ng mga Nilalaman:

State Machine sa Arduino - isang Light ng Trapiko ng Pedestrian: 6 na Hakbang (na may Mga Larawan)
State Machine sa Arduino - isang Light ng Trapiko ng Pedestrian: 6 na Hakbang (na may Mga Larawan)

Video: State Machine sa Arduino - isang Light ng Trapiko ng Pedestrian: 6 na Hakbang (na may Mga Larawan)

Video: State Machine sa Arduino - isang Light ng Trapiko ng Pedestrian: 6 na Hakbang (na may Mga Larawan)
Video: Lesson 77: Using VL53L0X 200cm Laser Distance Sensor | Arduino Step By Step Course 2024, Hulyo
Anonim
Machine ng Estado sa Arduino - isang Pedestrian Traffic Light
Machine ng Estado sa Arduino - isang Pedestrian Traffic Light

Hey there! Ipapakita ko sa iyo kung paano mag-program ng ilaw ng trapiko ng pedestrian para sa Arduino sa C ++ gamit ang isang may takdang makina ng estado sa pamamagitan ng paggamit ng YAKINDU Statechart Tools. Ipapakita nito ang lakas ng mga machine ng estado at maaaring magamit bilang isang blueprint para sa karagdagang mga proyekto.

Mga gamit

Kailangan mo lamang ng isang Arduino, ilang mga pushbutton, LEDs, Jumper at resistors.

Hardware

  • 2x Pushbutton
  • 2x Traffic Lights o maaari mong gamitin ang mga LED na may 220 Ohm resistors
  • 2x 10k Ohm resistors
  • Breadboard
  • Jumper
  • Arduino Uno / Mega (o anumang iba pa, nakakuha ng hindi bababa sa 8 GPIO)

Software

  • YAKINDU Statechart Tools
  • Eclipse C ++ IDE para sa Arduino

Hakbang 1: Tukuyin Kung Paano Ito Gumagana: Banayad na Trapiko ng Pedestrian

Sa una, kailangan naming tukuyin kung paano dapat gumana ang ilaw ng trapiko ng pedestrian. Sinubukan kong buod ang mga puntos ng bala:

  • Ginamit ang dalawang ilaw sa trapiko - isa para sa mga kotse, ang isa para sa mga naglalakad
  • Ang ilaw ng trapiko ay maaaring i-on sa pamamagitan ng paggamit ng isang pindutan
  • Maaaring humiling ang taong naglalakad sa pagtawid sa kalye sa pamamagitan ng pagpindot sa isang pindutan
  • Ang pinatay na ilaw ng trapiko ay ipinahiwatig sa pamamagitan ng pagpikit sa parehong dilaw na mga LED
  • Pagkatapos ng pag-on, ang ilaw ng trapiko ay naghihintay ng 10 segundo sa ligtas na mode
  • Pagkatapos ng ligtas na mode, ang mga kotse ay palaging may berdeng yugto hanggang sa magsimula ang isang pedestrian ng isang kahilingan
  • Ang kahilingan sa pedestrian para sa tawiran ay ipinahiwatig ng toggling dilaw na LED

Bilang karagdagan, mayroong ilang mga kaganapan sa oras depende sa paraan ng kung paano gumagana ang isang ilaw trapiko.

Hakbang 2: Buuin ang Circuit

Buuin ang Circuit
Buuin ang Circuit

Simulan natin ang pag-set up ng circuit. Sa aking halimbawa, tulad ng nakikita mo sa preview ng imahe, gumamit ako ng isang Arduino Mega 2560, ngunit ang bawat iba pang Arduino na may hindi bababa sa walong mga GPIO ay dapat na maayos. Bilang karagdagan, bumili ako ng ilang mga ilaw na trapiko ng 5V sa Amazon. Maghanap lang para sa Traffic Light Arduino. Kung hindi man, maaari mo lamang gamitin ang anim na magkakaibang mga LED. Bukod dito, kailangan mo ng dalawang push button at dalawang 10k Ohm resistors.

Ang tatlong kaliwang LED ay ginagamit para sa trapiko ng kotse at ang tatlong kanang LED para sa mga naglalakad, kung saan maaaring ipahiwatig ng dilaw ang isang kahilingan.

Hakbang 3: Paglikha ng State Machine

Paglikha ng State Machine
Paglikha ng State Machine

Kaya, tulad ng nakikita mo mayroong dalawang pangunahing mga estado na may mga miyembro ng pinaghalo - estado at patayin ang estado. Maaari kang magpalipat-lipat sa pagitan ng parehong mga estado sa pamamagitan ng paggamit ng kaganapan saOff, na naka-wire sa pindutang ON / OFF. Sa paunang estado, ang off state, ang parehong mga dilaw na LED ay nagsisimulang kumukurap bawat segundo. Kapag na-on na ang ilaw ng trapiko, nagsisimula ito sa Ligtas. Pagkatapos ng 10 segundo ang tipikal na pag-uugali ng mga ilaw ng trapiko ay hahawakan. Ang pula at dilaw na LED ay bubuksan sa estado ng StreetPrepare at ang ilaw ng trapiko ay magiging berde pagkatapos ng 2 pang segundo. Mula ngayon, naghihintay ang makina ng estado para sa kaganapan sa pedestrianRequest, na naka-wire sa pangalawang pindutan. Matapos ipadala ang kaganapan ang kahilingan ay ipahiwatig sa pamamagitan ng pag-toggle ng dilaw na LED bawat segundo sa estado ng PedWating. Pagkalipas ng 7 segundo ang ilaw ng trapiko ay lilipat muna sa dilaw at pagkatapos ay pula hanggang sa makuha ng mga pedestrian ang signal upang pumunta sa estado ng PedestrianGreen. Pagkatapos nito, ang PedestrianRed ay isinaaktibo at ang pag-ikot ay paulit-ulit. Maaari lamang itong makagambala sa pamamagitan ng pag-patay muli ng ilaw ng trapiko.

Hakbang 4: Pagpapatakbo ng Halimbawa

Hakbang 5: Binuo ang C ++ Code

Ang nabuong C ++ code ay isang klasikong switch-case upang hawakan ang lohika ng makina ng estado. Isa lamang itong code snippet ng hitsura nito:

walang bisa TrafficLightCtrl:: runCycle () {clearOutEvents (); para sa (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {switch (stateConfVector [stateConfVectorPosition]) {case main_region_on_r1_StreetGreen: {main_region_on_r1_StreetGreen_react (true); pahinga; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (totoo); pahinga; } default: masira; } clearInEvents (); }

Hakbang 6: Kunin ang Halimbawa

Ang buong halimbawa ay handa nang mag-ipon at magpatakbo. Dumarating ito sa YAKINDU Statechart Tools, na libre para sa hindi komersyal na paggamit. Pagkatapos mag-download, maaari mong mai-import ang halimbawa nang direkta sa tool:

File -> Bago -> Halimbawa -> Mga Halimbawa ng YAKINDU Statechart -> Susunod -> Traffic Light (C ++) para sa Arduino

> DITO maaari mong i-download ang YAKINDU Statechart Tools <<

Maaari kang magsimula sa isang 30 araw na pagsubok. Pagkatapos, kailangan mong makakuha ng isang lisensya, na libre para sa hindi pang-komersyal na paggamit!

Inirerekumendang: