Obsah:

State Machine na Arduinu - chodec na semaforu: 6 kroků (s obrázky)
State Machine na Arduinu - chodec na semaforu: 6 kroků (s obrázky)

Video: State Machine na Arduinu - chodec na semaforu: 6 kroků (s obrázky)

Video: State Machine na Arduinu - chodec na semaforu: 6 kroků (s obrázky)
Video: Experimento 10 - Semáforo de Carros e Pedestres com Máquina de Estados 2024, Červenec
Anonim
State Machine na Arduinu - chodec na semaforu
State Machine na Arduinu - chodec na semaforu

Čau! Ukážu vám, jak naprogramovat semafor pro chodce pro Arduino v C ++ pomocí stroje s konečným stavem pomocí nástrojů YAKINDU Statechart Tools. Toto bude demonstrovat sílu stavových strojů a může být použito jako plán pro další projekty.

Zásoby

Potřebujete pouze Arduino, některá tlačítka, LED diody, propojku a odpory.

Hardware

  • 2x tlačítko
  • 2x semafory nebo můžete použít LED s rezistory 220 Ohm
  • 2x 10k Ohm odpory
  • Prkénko
  • Skokan
  • Arduino Uno/Mega (nebo jakýkoli jiný, který získal alespoň 8 GPIO)

Software

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

Krok 1: Definujte, jak to funguje: Semafor pro chodce

Nejprve musíme určit, jak by měl fungovat semafor pro chodce. Pokusil jsem se shrnout body odrážky:

  • Používají se dva semafory - jeden pro auta, druhý pro chodce
  • Semafor lze zapnout pomocí tlačítka
  • Chodec může požádat o přechod přes ulici stisknutím tlačítka
  • Vypnutý semafor je indikován blikáním obou žlutých LED diod
  • Po zapnutí čeká semafor v nouzovém režimu 10 sekund
  • Po nouzovém režimu mají automobily vždy zelenou fázi, dokud chodec nezačne požadavek
  • Žádost chodce o přechod je indikována přepínáním žluté LED

Kromě toho existují určité časové události v závislosti na způsobu fungování semaforu.

Krok 2: Vybudujte obvod

Vybudujte obvod
Vybudujte obvod

Začněme nastavovat obvod. V mém příkladu, jak vidíte na náhledu, jsem použil Arduino Mega 2560, ale každé druhé Arduino s alespoň osmi GPIO by mělo být v pořádku. Navíc jsem na Amazonu koupil nějaké 5V semafory. Stačí vyhledat semafor Arduino. Jinak můžete jednoduše použít šest různých LED diod. Kromě toho potřebujete dvě tlačítka a dva 10k Ohm odpory.

Tři levé LED diody se používají pro automobilový provoz a tři pravé LED pro chodce, kde žlutá může indikovat požadavek.

Krok 3: Vytvoření stavového stroje

Vytvoření stavového stroje
Vytvoření stavového stroje

Jak tedy vidíte, existují dva hlavní stavy se složenými členy - stav zapnuto a vypnuto. Mezi oběma stavy můžete přepínat pomocí události onOff, která je připojena k tlačítku ON/OFF. V počátečním stavu, ve vypnutém stavu, obě žluté LED diody začnou blikat každou sekundu. Jakmile se semafor zapne, začne v bezpečném místě. Po 10 sekundách bude zpracováno typické chování semaforů. Ve stavu StreetPrepare se rozsvítí červená a žlutá LED a po dalších 2 sekundách se semafor rozsvítí zeleně. Od této chvíle státní stroj čeká na událost chodec, která je připojena k druhému tlačítku. Po odeslání události bude požadavek indikován přepínáním žluté LED každou sekundu ve stavu PedWating. O 7 sekund později se semafor přepne nejprve na žlutou a poté na červenou, dokud chodci nedostanou signál, aby šli do stavu PedestrianGreen. Poté se aktivuje PedestrianRed a cyklus se opakuje. To lze přerušit pouze opětovným vypnutím semaforu.

Krok 4: Spuštění příkladu

Krok 5: Vygenerovaný kód C ++

Vygenerovaný kód C ++ je klasickým přepínačem, který zvládne logiku stavového stroje. Toto je jen úryvek kódu, jak to vypadá:

void TrafficLightCtrl:: runCycle () {clearOutEvents (); for (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {switch (stateConfVector [stateConfVectorPosition]) {case main_region_on_r1_StreetGreen: {main_region_on_r1 přestávka; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (true); přestávka; } výchozí: break; } clearInEvents (); }

Krok 6: Získejte příklad

Celý příklad je připraven ke kompilaci a spuštění. Dodává se s nástroji YAKINDU Statechart Tools, které jsou zdarma pro nekomerční použití. Po stažení můžete příklad importovat přímo do nástroje:

Soubor -> Nový -> Příklad -> Příklady stavového diagramu YAKINDU -> Další -> Semafor (C ++) pro Arduino

> ZDE si můžete stáhnout YAKINDU Statechart Tools <<

Můžete začít s 30denní zkušební verzí. Poté musíte získat licenci, která je pro nekomerční použití zdarma!

Doporučuje: