Tartalomjegyzék:

Állami gép az Arduino -n - gyalogos közlekedési lámpa: 6 lépés (képekkel)
Állami gép az Arduino -n - gyalogos közlekedési lámpa: 6 lépés (képekkel)

Videó: Állami gép az Arduino -n - gyalogos közlekedési lámpa: 6 lépés (képekkel)

Videó: Állami gép az Arduino -n - gyalogos közlekedési lámpa: 6 lépés (képekkel)
Videó: Jelzőlámpa - Assembly 2024, December
Anonim
Állami gép az Arduino -n - gyalogos közlekedési lámpa
Állami gép az Arduino -n - gyalogos közlekedési lámpa

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

Építsd meg az áramkört
Építsd meg 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

Az államgép létrehozása
Az államgé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: