Tartalomjegyzék:

Arduino HMI állapotgépek használatával: 9 lépés
Arduino HMI állapotgépek használatával: 9 lépés

Videó: Arduino HMI állapotgépek használatával: 9 lépés

Videó: Arduino HMI állapotgépek használatával: 9 lépés
Videó: How to Interacting Arduino with HMI | Controlling arduino from HMI 2024, November
Anonim
Arduino HMI az állami gépek használatával
Arduino HMI az állami gépek használatával

Ebben az utasításban megmutatom, hogyan használhatod a YAKINDU Statechart Tools eszközöket egy egyszerű és bővíthető HMI megvalósításához az Arduino 16x2 LCD billentyűzetpajzsának használatával.

A Finite State Machines (FSM) erőteljes tervezési minta a komplex emberi gépi interfészek (HMI) kifejlesztéséhez. Mivel a HMI funkcionalitása növekedhet, hasznos olyan tervezési mintát használni, mint az állapotgépek.

A teljes példa a YAKINDU Statechart Tools -ba van ágyazva. Ezenkívül az Eclipse C ++ IDE for Arduino Plugin programot fordították és villogták az IDE -ben.

A YAKINDU Statechart Tools rövid összefoglalója

Ezzel az eszközzel grafikus állapotgépeket lehet létrehozni. Lehetővé teszi a felhasználó számára, hogy C, C ++ vagy Java kódot generáljon az állapotgépről. Ezzel a megközelítéssel a modell megváltoztatható vagy kibővíthető, és a felhasználó egyszerűen újragenerálhatja a kódot, és nem kell egyszerű forráskódot írnia.

Kellékek

Alkatrészek:

  • Arduino (Uno, Mega)
  • USB kábel
  • 16x2 LCD billentyűpajzs

Eszközök:

  • YAKINDU Állapotjelző eszközök
  • Eclipse C ++ IDE az Arduino számára

1. lépés: A hardver

Image
Image

Az LCD billentyűpajzs egyszerűen csatlakoztatható az Arduino -hoz. 16x2 LCD kijelzővel és hat nyomógombbal rendelkezik:

  • Bal
  • Jobb
  • Fel
  • Le
  • Válassza a lehetőséget
  • (Visszaállítás)

Nyilvánvaló, hogy öt közülük használható. A kulcsok feszültségosztóhoz vannak kötve, és a feszültség függvényében az A0 érintkező segítségével észlelhetők. Szoftveres visszalépést használtam a helyes észleléshez.

2. lépés: Határozza meg, hogyan kell működnie

HMI vezérlés
HMI vezérlés

Az alkalmazásnak három dologra kell képesnek lennie.

  1. Itt szeretném a gombokkal navigálni öt állapot között: Felső, Középső, Alsó, Bal és Jobb
  2. Stopper Egy egyszerű stopper, amely elindítható, leállítható és visszaállítható. Ezt 100 milliszekundumonként növelni kell
  3. A harmadik rész egy egyszerű fel/le számlálót tartalmaz. Képesnek kell lennie a pozitív számok számítására, és vissza kell állítani

Az aktív menü (vagy az állapot) megjelenik a felső sor 16x2 -es LCD kijelzőjén. Az alkalmazás (állapot, időzítő vagy számláló) megjelenik az alsó sorban. A navigációhoz a bal és a jobb nyomógombot kell használni.

3. lépés: Az állapotgép illesztése

A gombok kikapcsolnak, és az állapotgéphez csatlakoznak. Használhatók, mint az állapotgép eseményeiben. Ezenkívül a műveletek az aktuális menü megjelenítésére vannak definiálva. És legalább két változó van megadva, az időzítő és a számláló.

felület:

// gombok, mint bemeneti események az eseményben jobb, ha az események balra, eseményekben fel, események lefelé, eseményválasztásban // HMI -specifikus értékek megjelenítése művelet kijelző LCDString (érték: karakterlánc, hossz: egész szám, pozíció: egész szám) művelet kijelző LCDInteger (érték: egész szám, pozíció: egész szám) művelet clearLCDRow (pozíció: egész) belső: // tároló változók

A C ++ kód generálása után az in eseményeket le kell kapcsolni, és be kell vezetni az interfészbe. Ez a kódrészlet megmutatja, hogyan kell ezt megtenni.

Először a gombokat határozzák meg:

#define NONE 0 #define SELECT 1 #define LEFT 2 #define DOWN 3 #define UP 4 #define RIGHT 5

Ezután egy funkció van definiálva a gomb olvasásához. Az értékek az LCD pajzs gyártójától függően eltérőek lehetnek.

static int readButton () {int eredmény = 0; eredmény = analógRead (0); if (eredmény <50) {return RIGHT; } if (eredmény <150) {return UP; } if (eredmény <300) {return DOWN; } if (eredmény <550) {return LEFT; } if (eredmény <850) {return SELECT; } vissza NINCS; }

A végén a gombok kikapcsolnak. 80 ms -tal jó eredményeket értem el. Ha egy gombot elengednek, az adott esetben felemeli a megfelelő értéket.

int oldState = NINCS; static void raiseEvents () {int buttonPressed = readButton (); késleltetés (80); oldState = gomb megnyomva; if (oldState! = NONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> raise_select (); szünet; } eset BALRA: {stateMachine-> raise_left (); szünet; } eset LE: {stateMachine-> raise_down (); szünet; } case UP: {stateMachine-> raise_up (); szünet; } case JOBB: {stateMachine-> raise_right (); szünet; } alapértelmezett: {break; }}}}

4. lépés: HMI vezérlés

Mindegyik állapot a menü egy részéhez használható. Vannak olyan alállapotok, ahol az alkalmazást - például a stopperórát - végrehajtják.

Ezzel a kialakítással a felület könnyen bővíthető. További menük egyszerűen hozzáadhatók ugyanazzal a tervezési mintával. Egy érzékelő értékének leolvasása és megjelenítése a negyedik menüpontban nem nagy dolog.

Egyelőre csak a bal és a jobb oldali használható vezérlőként. De fel és le is használható navigációs kiterjesztésként a főmenüben. Csak a kiválasztás gombbal lehet belépni egy adott menüpontba.

5. lépés: Az állapotok kezelése

Kezelje az államokat
Kezelje az államokat

A fogantyú állapot menü csak a navigáció további példájaként szolgál. A fel, le, jobbra vagy balra való váltás lehetővé teszi az állapotok közötti váltást. Az aktuális állapot mindig megjelenik az LCD kijelző második sorában.

6. lépés: Stopper

Stopperóra
Stopperóra

A stopper meglehetősen egyszerű. Kezdetben az időzítő értéke visszaáll. Az időzítőt a bal gombbal lehet elindítani, a bal és a jobb gombbal pedig váltani. A fel vagy le gombokkal visszaállíthatja az időzítőt. Az időzítőt a kiválasztó gomb kétszeri használatával is vissza lehet állítani nullára - kilépve a menüből és ismét belépve, mivel az időzítőt a stopper kezdeti bevitelével nullára állítják.

7. lépés: Számláló

Számláló
Számláló

Legalább van egy számláló megvalósítva. A számláló állapotba való belépés visszaállítja a számlálót. Bármely nyomógombbal elindítható, kivéve a kiválasztó gombot. Egyszerű fel/le számlálóként van megvalósítva, amelynek értéke nem lehet kisebb 0 -nál.

8. lépés: Szimuláció

9. lépés: Szerezze meg a példát

Az IDE -t innen töltheti le: YAKINDU Statechart Tools

Miután letöltötte az IDE -t, megtalálja a példát a Fájl -> Új -> Példa segítségével

A hobbisták számára ingyenesen használható, de 30 napos próbaverziót is használhat.

Ajánlott: