Sadržaj:

Državni stroj na Arduinu - pješački semafor: 6 koraka (sa slikama)
Državni stroj na Arduinu - pješački semafor: 6 koraka (sa slikama)

Video: Državni stroj na Arduinu - pješački semafor: 6 koraka (sa slikama)

Video: Državni stroj na Arduinu - pješački semafor: 6 koraka (sa slikama)
Video: ICC Proxxon MF 70 CNC 2024, Srpanj
Anonim
Državni stroj na Arduinu - pješački semafor
Državni stroj na Arduinu - pješački semafor

Pozdrav! Pokazat ću vam kako programirati pješački semafor za Arduino u C ++ s konačnim strojem stanja pomoću YAKINDU alata za grafikone stanja. To će pokazati snagu državnih strojeva i može se koristiti kao nacrt za daljnje projekte.

Pribor

Potreban vam je samo Arduino, neki gumbi, LED diode, kratkospojnik i otpornici.

Hardver

  • 2x tipkalo
  • 2x semafora ili možete koristiti LED sa otpornicima od 220 ohma
  • 2x 10k Ohm otpornika
  • Oglasna ploča
  • Džemper
  • Arduino Uno/Mega (ili bilo koji drugi, koji ima najmanje 8 GPIO -ova)

Softver

  • YAKINDU Alati za grafikone stanja
  • Eclipse C ++ IDE za Arduino

Korak 1: Definirajte kako to radi: Pješački semafor

Prvo moramo odrediti kako bi semafor za pješake trebao raditi. Pokušao sam sažeti glavne točke:

  • Koriste se dva semafora - jedan za automobile, drugi za pješake
  • Semafor se može uključiti pritiskom na gumb
  • Pješak može zatražiti prelazak ulice pritiskom na gumb
  • Ugašeni semafor označava se treptanjem obje žute LED diode
  • Nakon uključivanja, semafor čeka 10 sekundi u sigurnom načinu rada
  • Nakon sigurnog načina rada, automobili uvijek imaju zelenu fazu sve dok pješak ne uputi zahtjev
  • Zahtjev za prelazak pješaka označen je uključivanjem žute LED diode

Osim toga, postoje neki vremenski događaji ovisno o načinu rada semafora.

Korak 2: Izgradite krug

Izgradite krug
Izgradite krug

Počnimo s postavljanjem kruga. U mom primjeru, kao što možete vidjeti na slici za pregled, koristio sam Arduino Mega 2560, ali svaki drugi Arduino s najmanje osam GPIO -ova trebao bi biti u redu. Osim toga, kupio sam 5 semafora na Amazonu. Samo tražite Semafor Arduino. Inače, jednostavno možete koristiti šest različitih LED dioda. Nadalje, potrebna su vam dva gumba i dva otpornika od 10 k Ohma.

Tri lijeve LED diode koriste se za promet automobila, a tri desne LED diode za pješake, gdje žuta može označiti zahtjev.

Korak 3: Stvaranje državnog stroja

Stvaranje Državnog stroja
Stvaranje Državnog stroja

Dakle, kao što vidite postoje dva glavna stanja sa složenim članovima - stanje uključeno i stanje isključeno. Možete se prebacivati između dva stanja pomoću događaja onOff, koji je povezan s gumbom ON/OFF. U početnom stanju, isključenom stanju, obje žute LED diode počinju treperiti svake sekunde. Nakon što je semafor uključen, on počinje u Safestate. Nakon 10 sekundi bit će riješeno tipično ponašanje semafora. Crvena i žuta LED dioda će se uključiti u stanju StreetPrepare, a semafor će zasvijetliti nakon još 2 sekunde. Od sada državni stroj čeka događaj pedestrianRequest, koji je povezan s drugim gumbom. Nakon slanja događaja zahtjev će biti označen promjenom žute LED svake sekunde u stanju PedWating. 7 sekundi kasnije semafor će se prvo prebaciti u žuto, a zatim u crveno dok pješaci ne dobiju signal za prelazak u stanje pješaka. Nakon toga aktivira se Pješački crveni i ciklus se ponavlja. To se može prekinuti samo ponovnim gašenjem semafora.

Korak 4: Pokretanje primjera

Korak 5: Generirani C ++ kod

Generirani C ++ kôd klasična je sklopka za rukovanje logikom stroja stanja. Ovo je samo isječak koda kako izgleda:

void TrafficLightCtrl:: runCycle () {clearOutEvents (); za (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {switch (stateConfVector [stateConfVectorPosition]) {slučaj main_region_on_r1_StreetGreen: {main_region_etr (true1); pauza; } slučaj main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (true); pauza; } zadano: break; } clearInEvents (); }

Korak 6: Uzmite primjer

Cijeli je primjer spreman za sastavljanje i izvođenje. Dolazi s alatima YAKINDU Statechart Tools, besplatnim za nekomercijalnu uporabu. Nakon preuzimanja, možete uvesti primjer izravno u alat:

Datoteka -> Novo -> Primjer -> Primjeri grafikona stanja YAKINDU -> Dalje -> Semafor (C ++) za Arduino

> OVDJE možete preuzeti YAKINDU alate za grafikone stanja <<

Možete započeti s probnim periodom od 30 dana. Nakon toga morate dobiti licencu koja je besplatna za nekomercijalnu uporabu!

Preporučeni: