Tartalomjegyzék:
- Kellékek
- 1. lépés: Határozza meg, hogyan működik: Gyalogos közlekedési lámpa
- 2. lépés: Építse fel az áramkört
- 3. lépés: Az állapotgép létrehozása
- 4. lépés: A példa futtatása
- 5. lépés: C ++ kód létrehozása
- 6. lépés: Szerezze meg a példát
Videó: Állami gép az Arduino -n - gyalogos közlekedési lámpa: 6 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Sziasztok! Megmutatom, hogyan programozhat gyalogos lámpát az Arduino számára C ++ nyelven egy véges állapotú géppel a YAKINDU Statechart Tools segítségével. Ez bemutatja az állami gépek erejét, és tervként használható további projektekhez.
Kellékek
Csak egy Arduino kell hozzá, néhány nyomógomb, LED, Jumper és ellenállások.
Hardver
- 2x nyomógomb
- 2x közlekedési lámpa, vagy használhat 220 ohmos ellenállású LED -eket
- 2x 10 k ohmos ellenállás
- Kenyeretábla
- Jumper
- Arduino Uno/Mega (vagy bármely más, amely legalább 8 GPIO -t kapott)
Szoftver
- YAKINDU Állapotjelző eszközök
- Eclipse C ++ IDE az Arduino számára
1. lépés: Határozza meg, hogyan működik: Gyalogos közlekedési lámpa
Először meg kell határoznunk, hogyan kell működnie a gyalogos lámpának. Megpróbáltam összefoglalni a pontokat:
- Két közlekedési lámpát használnak - az egyiket az autóknak, a másikat a gyalogosoknak
- A közlekedési lámpát egy gombbal lehet bekapcsolni
- A gyalogos egy gomb megnyomásával kérheti az utca átkelését
- A kikapcsolt közlekedési lámpát mindkét sárga LED villogása jelzi
- Bekapcsolás után a közlekedési lámpa 10 másodpercig várakozik biztonságos módban
- A biztonságos mód után az autóknak mindig van zöld fázisuk, amíg a gyalogos el nem indítja a kérést
- A gyalogos átkelésre vonatkozó kérését sárga LED váltja
Ezenkívül a közlekedési lámpák működésének módjától függően vannak bizonyos időbeli események.
2. lépés: Építse fel az áramkört
Kezdjük az áramkör beállítását. Példámban, amint az az előnézeti képen is látható, Arduino Mega 2560 -at használtam, de minden más, legalább nyolc GPIO -val rendelkező Arduino -nak rendben kell lennie. Ezenkívül vettem néhány 5V -os közlekedési lámpát az Amazon -on. Csak keresse a Traffic Light Arduino -t. Ellenkező esetben egyszerűen használhat hat különböző LED -et. Ezenkívül két nyomógombra és két 10 k ohmos ellenállásra van szüksége.
A három bal oldali LED az autóforgalomhoz és a három jobb oldali LED a gyalogosokhoz, ahol a sárga jelzi a kérést.
3. lépés: Az állapotgép létrehozása
Tehát, mint látható, két fő állapot van összetett tagokkal - állapot be és ki. A két állapot között válthat az onOff esemény használatával, amely az ON/OFF gombhoz van kötve. Kezdeti állapotban, kikapcsolt állapotban mindkét sárga LED másodpercenként villogni kezd. A közlekedési lámpa bekapcsolása után a legbiztonságosabb helyen indul. 10 másodperc múlva kezelni kell a jelzőlámpák jellemző viselkedését. A piros és sárga LED kigyullad StreetPrepare állapotban, a közlekedési lámpa pedig 2 másodperc múlva zöldre vált. Mostantól kezdve az állapotgép várja a második gombhoz bekötött, indított „footrianRequest” eseményt. Az esemény elküldése után a kérést a sárga LED minden másodpercben PedWating állapotban történő váltása jelzi. 7 másodperccel később a jelzőlámpa először sárgára, majd pirosra vált, amíg a gyalogosok jelzést nem kapnak a GyalogosZöld állapotba. Ezt követően a PedestrianRed aktiválódik, és a ciklus megismétlődik. Ezt csak úgy lehet megszakítani, ha ismét kikapcsolják a közlekedési lámpát.
4. lépés: A példa futtatása
5. lépés: C ++ kód létrehozása
A generált C ++ kód egy klasszikus kapcsoló tok az állapotgép logikájának kezelésére. Ez csak egy kódrészlet a kinézetéről:
void TrafficLightCtrl:: runCycle () {clearOutEvents (); for (stateConfVectorPosition = 0; stateConfVectorPosition <maxOrthogonalStates; stateConfVectorPosition ++) {switch (stateConfVector [stateConfVectorPosition]) {case main_region_on_r1_StreetGreen: {main_region_on_reen_react_Street szünet; } case main_region_on_r1_PedWaiting_r1_waitOn: {main_region_on_r1_PedWaiting_r1_waitOn_react (igaz); szünet; } alapértelmezett: break; } clearInEvents (); }
6. lépés: Szerezze meg a példát
Az egész példa fordításra és futtatásra kész. Jár hozzá a YAKINDU Statechart Tools, amely nem kereskedelmi használatra ingyenes. A letöltés után közvetlenül importálhatja a példát az eszközbe:
Fájl -> Új -> Példa -> YAKINDU Statechart Példák -> Következő -> Traffic Light (C ++) for Arduino
> ITT letöltheti a YAKINDU Statechart Tools << alkalmazást
Kezdheti egy 30 napos próbaidőszakkal. Ezt követően licencet kell szereznie, amely nem kereskedelmi használatra ingyenes!
Ajánlott:
Zajos közlekedési lámpa - DIY 3D nyomtatás: 8 lépés (képekkel)
Zajos közlekedési lámpa - DIY 3D nyomtatás: Minden ember csendben akar dolgozni, és fontos, hogy jó munkakörnyezet legyen. A csend hatékony munkához vezet. Ezt a projektet azért végeztük, hogy elérjük ezt a javaslatot. A zajos jelzőlámpa egy „jelzőlámpából” áll, amely szabályozza a dB
Arduino Otto robot állami géppel: 4 lépés
Arduino Otto robot az állami géppel: A projekt áttekintése A YAKINDU Statechart Tools (ingyenes, nem kereskedelmi célú) használatával könnyedén használhatunk állapotgépeket a viselkedés grafikus modellezésére
Arduino közlekedési lámpa: 3 lépés (képekkel)
Arduino Traffic Light: Ez az utasítás a következőkből származik: Arduino-Traffic-Light-Simulator A következő változtatásokat hajtottam végre: A LED -ek furatai kisebbek, 5 mm -es LED -ek esetében (10 mm -es LED -ek helyett)
Arduino közlekedési lámpa: 8 lépés (képekkel)
Arduino közlekedési lámpa: Ez a projekt 5 mm-es LED-ekkel és T1-3/4 Clear Standard Led szerelési hardverrel készült a jobb vizualizáció érdekében, így 3 LED-et használva, külön-külön megjelenítve a színeit: piros, sárga és amp; Zöld ill
Intelligens interaktív közlekedési lámpa: 5 lépés (képekkel)
Intelligens interaktív jelzőlámpa: Készen áll a világ legjobb és leginteraktívabb jelzőlámpájának megépítésére? Jó! Ebben az oktatóanyagban elmagyarázzuk, hogyan építhet egyet egyedül az Arduino használatával. Szükséges összetevők:- Arduino (..duh)- LM317 Mosfet- 2x 60 cm-es analóg RGB LED-szalagok (12V)- PVC cső