Obsah:
- Zásoby
- Krok 1: Definujte, ako to funguje: Semafor pre chodcov
- Krok 2: Vybudujte obvod
- Krok 3: Vytvorenie stavového stroja
- Krok 4: Spustenie príkladu
- Krok 5: Generovaný kód C ++
- Krok 6: Získajte príklad
Video: Štátny stroj na Arduine - semafor pre chodcov: 6 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
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
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
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:
SilverLight: Environmentálny monitor založený na Arduine pre serverové miestnosti: 3 kroky (s obrázkami)
SilverLight: Environmentálny monitor založený na Arduine pre serverovne: Hneď ako som dostal úlohu hľadať environmentálnu sondu na monitorovanie teploty v serverovni mojej spoločnosti. Moja prvá myšlienka bola: prečo nepoužiť Raspberry PI a snímač DHT, je možné ho nastaviť za menej ako hodinu vrátane operačného systému
Projekt semaforu Arduino [s prechodom pre chodcov]: 3 kroky
Projekt semaforu Arduino [s prechodom pre chodcov]: Ak hľadáte niečo ľahké, jednoduché a zároveň chcete zapôsobiť na každého svojim Arduino, projekt semaforu je pravdepodobne najlepšou voľbou, najmä ak ste vo svete začiatočník. Arduina. Najprv uvidíme ho
Zabezpečenie SCADA pre riadiace systémy založené na Arduine: 5 krokov
Zabezpečenie SCADA pre riadiace systémy založené na Arduine: SCADA (Supervisory Control and Data Acquisition) je rámec pre monitorovanie a vzdialený prístup k riadiacim systémom bežne používaným v celom rade priemyselných systémov, ako sú elektrárne, železnice, výrobné jednotky, oceliarne, lietadlá , s
Stroj na flautu založený na Arduine: 10 krokov (s obrázkami)
Stroj na flautu založený na Arduine: V tomto návode sa pokúšam predstaviť projekt, ktorý kombinuje umenie s inžinierstvom. Stroj, ktorý hrá na flaute. Ovláda poznámky pomocou Arduina. Na Arduino, ktoré Arduino hrá na flaute, je možné naprogramovať rôzne melódie alebo piesne. Neexistuje žiadny
Cenovo dostupné riešenie pre víziu s robotickým ramenom založeným na Arduine: 19 krokov (s obrázkami)
Cenovo dostupné riešenie vízie s robotickým ramenom založeným na Arduine: Keď hovoríme o strojovom videní, vždy sa nám to zdá také nedosiahnuteľné. Vytvorili sme demo vízie s otvoreným zdrojovým kódom, ktoré by bolo veľmi jednoduché urobiť pre každého. V tomto videu s kamerou OpenMV robot bez ohľadu na to, kde je červená kocka,