Sadržaj:

Državna mašina na Arduinu - pješački semafor: 6 koraka (sa slikama)
Državna mašina na Arduinu - pješački semafor: 6 koraka (sa slikama)

Video: Državna mašina na Arduinu - pješački semafor: 6 koraka (sa slikama)

Video: Državna mašina na Arduinu - pješački semafor: 6 koraka (sa slikama)
Video: КАК СДЕЛАТЬ ARDUINO РОБОТ МАШИНКУ КОТОРЫЙ ОБХОДИТ ПРЕПЯТСТВИЯ 2024, Juli
Anonim
Državna mašina na Arduinu - pješački semafor
Državna mašina na Arduinu - pješački semafor

Pozdrav! Pokazat ću vam kako programirati pješački semafor za Arduino u C ++ sa strojem konačnih stanja pomoću YAKINDU alata za grafikone stanja. Ovo će pokazati moć državnih mašina i može se koristiti kao nacrt za daljnje projekte.

Supplies

Potreban vam je samo Arduino, nekoliko tipki, LED diode, kratkospojnik i otpornici.

Hardver

  • 2x Taster
  • 2x semafora ili možete koristiti LED sa otpornicima od 220 ohma
  • 2x 10k Ohm otpornika
  • Breadboard
  • Jumper
  • Arduino Uno/Mega (ili bilo koji drugi, koji ima najmanje 8 GPIO -ova)

Softver

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

Korak 1: Definišite kako to radi: Semafor za pješake

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 dugme
  • Pješak može zatražiti prelazak ulice pritiskom na dugme
  • Ugašeni semafor se prikazuje trepćućim žutim LED diodama
  • 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 i 5 semafora na Amazonu. Samo potražite Arduino na semaforu. U suprotnom, možete jednostavno 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 automobilski promet, a tri desne LED za pješake, gdje žuta može označiti zahtjev.

Korak 3: Kreiranje State Machine -a

Kreiranje državne mašine
Kreiranje državne mašine

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 sa tipkom ON/OFF. U početnom stanju, isključeno, 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 lampica će se uključiti u stanju StreetPrepare, a semafor će zasvijetliti nakon još 2 sekunde. Od sada državna mašina čeka događaj pedestrianRequest, koji je povezan sa drugim dugmetom. 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 sve dok pješaci ne dobiju signal za prelazak u stanje pješačke staze. Nakon toga se aktivira 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 je klasična 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; break; } slučaj main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (true); break; } default: break; } clearInEvents (); }

Korak 6: Uzmite primjer

Cijeli primjer je spreman za kompajliranje i pokretanje. Dolazi s alatima YAKINDU Statechart Tools, besplatnim za nekomercijalnu upotrebu. 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 upotrebu!

Preporučuje se: