Obsah:

Štátny stroj na Arduine - semafor pre chodcov: 6 krokov (s obrázkami)
Štátny stroj na Arduine - semafor pre chodcov: 6 krokov (s obrázkami)

Video: Štátny stroj na Arduine - semafor pre chodcov: 6 krokov (s obrázkami)

Video: Štátny stroj na Arduine - semafor pre chodcov: 6 krokov (s obrázkami)
Video: ВРОЦЛАВ. Это точно Польша? Культурная столица Европы! Достопримечательности: мосты, гномы, виды 2024, November
Anonim
Štátny stroj na Arduine - semafor pre chodcov
Štátny stroj na Arduine - semafor pre chodcov

Ahoj! Ukážem vám, ako naprogramovať semafor pre chodcov pre Arduino v C ++ pomocou stroja s konečným stavom pomocou nástrojov YAKINDU Statechart Tools. Toto bude demonštrovať silu stavových strojov a môže byť použité ako plán pre ďalšie projekty.

Zásoby

Potrebujete iba Arduino, niekoľko tlačidiel, diódy LED, prepojku a odpory.

Hardvér

  • 2x tlačidlo
  • 2x semafory alebo môžete použiť LED diódy s odpormi 220 Ohm
  • 2x 10k Ohm odpory
  • Breadboard
  • Svetrík
  • Arduino Uno/Mega (alebo akékoľvek iné, ktoré má najmenej 8 GPIO)

Softvér

  • Nástroje YAKINDU Statechart
  • Eclipse C ++ IDE pre Arduino

Krok 1: Definujte, ako to funguje: Semafor pre chodcov

Najprv musíme špecifikovať, ako by mal fungovať semafor pre chodcov. Pokúsil som sa zhrnúť body odrážky:

  • Používajú sa dva semafory - jeden pre autá a druhý pre chodcov
  • Semafor je možné zapnúť pomocou tlačidla
  • Chodec môže požiadať o prechod cez ulicu stlačením tlačidla
  • Vypnutý semafor je indikovaný blikaním oboch žltých diód LED
  • Po zapnutí čaká semafor v núdzovom režime 10 sekúnd
  • Po núdzovom režime majú autá vždy zelenú fázu, kým chodec nezačne požiadavku
  • Žiadosť o prechod pre chodcov je signalizovaná prepínaním žltej LED diódy

Okrem toho existujú určité časové udalosti v závislosti od spôsobu fungovania semaforu.

Krok 2: Vybudujte obvod

Vybudujte obvod
Vybudujte obvod

Začnime s nastavením obvodu. V mojom prípade, ako vidíte na obrázku náhľadu, som použil Arduino Mega 2560, ale každé druhé Arduino s najmenej ôsmimi GPIO by malo byť v poriadku. Okrem toho som v Amazone kúpil niekoľko 5V semaforov. Stačí vyhľadať semafor Arduino. V opačnom prípade môžete jednoducho použiť šesť rôznych LED diód. Ďalej potrebujete dve tlačidlá a dva 10k Ohm odpory.

Tri ľavé diódy LED slúžia na automobilovú dopravu a tri pravé diódy LED pre chodcov, kde žltá môže indikovať požiadavku.

Krok 3: Vytvorenie stavového stroja

Vytvorenie štátneho automatu
Vytvorenie štátneho automatu

Ako teda vidíte, existujú dva hlavné stavy s kompozitnými členmi - zapnutie a vypnutie. Medzi oboma stavmi môžete prepínať pomocou udalosti onOff, ktorá je prepojená s tlačidlom ON/OFF. V počiatočnom stave, vypnutom, začnú obe žlté diódy LED blikať každú sekundu. Keď je semafor zapnutý, začína v bezpečnom mieste. Po 10 sekundách sa zvládne typické správanie semaforov. V stave StreetPrepare sa rozsvieti červená a žltá dióda LED a semafor sa po ďalších 2 sekundách zmení na zelenú. Odteraz štátny stroj čaká na udalosť chodecPožiadavka, ktorá je prepojená s druhým tlačidlom. Po odoslaní udalosti bude požiadavka indikovaná prepínaním žltej LED diódy každú sekundu v stave PedWating. O 7 sekúnd neskôr sa semafor prepne najskôr na žltú a potom na červenú, kým chodci nedostanú signál, aby išli do stavu PedestrianGreen. Potom sa aktivuje PedestrianRed a cyklus sa zopakuje. Prerušiť to možno iba opätovným vypnutím semaforu.

Krok 4: Spustenie príkladu

Krok 5: Generovaný kód C ++

Generovaný kód C ++ je klasickou spínacou skrinkou na zvládnutie logiky stavového stroja. Toto je len útržok kódu, ako to vyzerá:

neplatné TrafficLightCtrl:: runCycle () {clearOutEvents (); for (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {switch (stateConfVector [stateConfVectorPosition]) {case main_region_on_r1_StreetGreen: {main_region_reet_r1_ prestávka; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (true); prestávka; } predvolené: break; } clearInEvents (); }

Krok 6: Získajte príklad

Celý príklad je pripravený na kompiláciu a spustenie. Dodáva sa s nástrojmi YAKINDU Statechart Tools, ktoré sú bezplatné na nekomerčné použitie. Po stiahnutí môžete príklad importovať priamo do nástroja:

Súbor -> Nový -> Príklad -> Príklady stavu YAKINDU -> Ďalej -> Semafor (C ++) pre Arduino

> TU si môžete stiahnuť YAKINDU Statechart Tools <<

Môžete začať s 30 -dňovou skúšobnou verziou. Potom musíte získať licenciu, ktorá je bezplatná na nekomerčné použitie!

Odporúča: