Obsah:
- Zásoby
- Krok 1: Hardware
- Krok 2: Definujte, jak by to mělo fungovat
- Krok 3: Propojení stavového stroje
- Krok 4: Ovládání HMI
- Krok 5: Zpracování států
- Krok 6: Stopky
- Krok 7: Počitadlo
- Krok 8: Simulace
- Krok 9: Získejte příklad
Video: Arduino HMI pomocí stavových strojů: 9 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
V tomto Instructable vám ukážu, jak pomocí nástrojů YAKINDU Statechart Tools realizovat jednoduché a rozšiřitelné HMI pomocí štítu LCD klávesnice 16x2 pro Arduino.
Konečné stavové stroje (FSM) jsou výkonným návrhovým vzorem pro vývoj komplexních rozhraní HMI (Human Machine Interfaces). Protože se funkčnost HMI může zvýšit, je užitečné použít návrhový vzor jako stavové stroje.
Kompletní příklad je vložen do nástrojů YAKINDU Statechart Tools. Pro kompilaci a blikání v IDE bylo navíc použito Eclipse C ++ IDE pro Arduino Plugin.
Stručná synopse nástrojů YAKINDU Statechart Tools
Pomocí tohoto nástroje je možné vytvářet grafické stavové automaty. Umožňuje uživateli generovat kód C, C ++ nebo Java ze stavového stroje. S tímto přístupem lze model změnit nebo rozšířit a uživatel může jednoduše znovu vygenerovat kód a nemusí psát prostý zdrojový kód.
Zásoby
Díly:
- Arduino (Uno, Mega)
- USB kabel
- Štít klávesnice LCD 16x2
Nástroje:
- Nástroje YAKINDU Statechart
- Eclipse C ++ IDE pro Arduino
Krok 1: Hardware
Štít klávesnice LCD lze jednoduše zapojit do Arduina. Má LCD displej 16x2 a navíc má šest tlačítek:
- Vlevo, odjet
- Že jo
- Nahoru
- Dolů
- Vybrat
- (Resetovat)
Je zřejmé, že jich lze použít pět. Klíče jsou zapojeny do děliče napětí a jsou detekovány pomocí pinu A0 v závislosti na napětí. K jejich správné detekci jsem použil software pro odskakování.
Krok 2: Definujte, jak by to mělo fungovat
Aplikace by měla umět tři věci.
- Zde chci pomocí tlačítek navigovat mezi pěti stavy: nahoře, uprostřed, dole, doleva a doprava
- Stopky Jednoduché stopky, které lze spustit, zastavit a resetovat. Mělo by se zvyšovat každých 100 milisekund
- Počítadlo Třetí část obsahuje jednoduché počítadlo nahoru/dolů. Měl by umět počítat kladná čísla a měl by být resetovatelný
Aktivní nabídka (nebo stav) se zobrazí na LCD 16x2 v horním řádku. Ve spodním řádku se zobrazí aplikace (Stav, Časovač nebo Počitadlo). Pro navigaci by mělo být použito levé a pravé tlačítko.
Krok 3: Propojení stavového stroje
Tlačítka budou odstraněna a zapojena do stavového stroje. Mohou být použity jako v událostech ve stavovém stroji. Kromě toho jsou definovány operace pro zobrazení aktuální nabídky. A jsou definovány alespoň dvě proměnné, jedna pro časovač a jedna pro čítač.
rozhraní:
// tlačítka jako vstupní události v události vpravo v události vlevo v události nahoru v události dolů v události vyberte // zobrazení HMI specifické hodnoty operace displayLCDString (hodnota: řetězec, délka: celé číslo, pozice: celé číslo) operace displayLCDInteger (hodnota: celé číslo, pozice: integer) operace clearLCDRow (pozice: integer) internal: // proměnné pro úložiště var cnt: integer var timeCnt: integer = 0
Po vygenerování kódu C ++ musí být události in odstraněny a připojeny k rozhraní. Tento fragment kódu ukazuje, jak to udělat.
Nejprve budou definována tlačítka:
#define NONE 0 #define SELECT 1 #define LEFT 2 #define DOWN 3 #define UP 4 #define RIGHT 5
Pak je definována funkce pro čtení tlačítka. Hodnoty se mohou lišit v závislosti na výrobci štítu LCD.
static int readButton () {int výsledek = 0; result = analogRead (0); if (result <50) {return RIGHT; } if (result <150) {return UP; } if (result <300) {return DOWN; } if (result <550) {return LEFT; } if (result <850) {return SELECT; } vrátit ŽÁDNÝ; }
Na konci budou tlačítka odstraněna. S 80 ms jsem udělal dobré výsledky. Jakmile tlačítko uvolníte, v případě potřeby se zvýší.
int oldState = NONE; static void raiseEvents () {int buttonPressed = readButton (); zpoždění (80); oldState = buttonPressed; if (oldState! = NONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> raise_select (); přestávka; } případ VLEVO: {stateMachine-> raise_left (); přestávka; } případ DOLŮ: {stateMachine-> raise_down (); přestávka; } případ NAHORU: {stateMachine-> raise_up (); přestávka; } případ VPRAVO: {stateMachine-> raise_right (); přestávka; } výchozí: {break; }}}}
Krok 4: Ovládání HMI
Každý stav se používá pro jednu část nabídky. Existují dílčí stavy, ve kterých bude aplikace - například stopky - spuštěna.
S tímto designem lze rozhraní snadno rozšířit. Další nabídky lze jednoduše přidat pomocí stejného designového vzoru. Načíst hodnotu senzoru a zobrazit ji ve čtvrté položce nabídky není žádný velký problém.
Prozatím se jako ovládací prvek používá pouze vlevo a vpravo. Nahoru a dolů ale lze použít i jako rozšíření navigace v hlavní nabídce. K zadání konkrétní položky nabídky bude použito pouze tlačítko pro výběr.
Krok 5: Zpracování států
Nabídka stavů rukojeti se používá pouze jako další příklad navigace. Pomocí nahoru, dolů, doprava nebo doleva lze přepínat mezi stavy. Aktuální stav bude vždy vytištěn na druhém řádku na LCD displeji.
Krok 6: Stopky
Stopky jsou celkem jednoduché. Zpočátku bude hodnota časovače resetována. Časovač lze spustit pomocí levého tlačítka a přepínat pomocí doleva a doprava. Pomocí nahoru nebo dolů resetujete časovač. Časovač lze také nastavit zpět na nulu pomocí tlačítka výběru dvakrát - opuštění nabídky a opětovné zadání, protože časovač bude nastaven na nulu počátečním zadáním stopek.
Krok 7: Počitadlo
Přinejmenším je implementován čítač. Zadáním stavu čítače se počítadlo resetuje. Lze jej spustit pomocí jakéhokoli tlačítka, kromě tlačítka pro výběr. Je implementován jako jednoduchý čítač nahoru/dolů, jehož hodnota nesmí být menší než 0.
Krok 8: Simulace
Krok 9: Získejte příklad
IDE si můžete stáhnout zde: YAKINDU Statechart Tools
Jakmile si stáhnete IDE, najdete příklad přes Soubor -> Novinka -> Příklad
Je to zdarma k použití pro fandy, ale můžete také použít 30denní zkušební verzi.
Doporučuje:
DIY -- Jak vyrobit robot Spider, který lze ovládat pomocí smartphonu pomocí Arduino Uno: 6 kroků
DIY || Jak vyrobit robota Spider, který lze ovládat pomocí smartphonu pomocí Arduino Uno: Při výrobě robota Spider se člověk může naučit tolik věcí o robotice. Stejně jako vytváření robotů je zábavné a náročné. V tomto videu vám ukážeme, jak vyrobit robota Spider, kterého můžeme ovládat pomocí smartphonu (Androi
Jak vyrobit dron pomocí Arduino UNO - Vytvořte kvadrokoptéru pomocí mikrokontroléru: 8 kroků (s obrázky)
Jak vyrobit dron pomocí Arduino UNO | Vytvořte kvadrokoptéru pomocí mikrokontroléru: Úvod Navštivte můj kanál na YouTube Drone je velmi drahý gadget (produkt) na nákup. V tomto příspěvku budu diskutovat, jak to udělám levně? A jak si můžete takhle vyrobit vlastní za levnou cenu … V Indii všechny materiály (motory, ESC
Neopixel Ws2812 Duhová LED záře s M5stick-C - Spuštění Rainbow na Neopixelu Ws2812 pomocí M5stack M5stick C pomocí Arduino IDE: 5 kroků
Neopixel Ws2812 Duhová LED záře s M5stick-C | Spuštění Rainbow na Neopixelu Ws2812 pomocí M5stack M5stick C pomocí Arduino IDE: Ahoj, v tomto návodu se naučíme používat LED diody Neopixel ws2812 nebo LED pásek nebo LED matici nebo LED kroužek s vývojovou deskou m5stack m5stick-C s Arduino IDE a vytvoříme s ním duhový vzor
Mluvící Arduino - Přehrávání MP3 pomocí Arduina bez jakéhokoli modulu - Přehrávání souborů MP3 z Arduina pomocí PCM: 6 kroků
Mluvící Arduino | Přehrávání MP3 pomocí Arduina bez jakéhokoli modulu | Přehrávání souboru MP3 z Arduina pomocí PCM: V tomto návodu se naučíme, jak přehrávat soubor mp3 s arduino bez použití jakéhokoli zvukového modulu, zde použijeme knihovnu PCM pro Arduino, která přehrává 16 bitů PCM s frekvencí 8 kHZ, takže to zvládneme
Prediktivní údržba rotujících strojů pomocí vibrací a špiček: 8 kroků
Prediktivní údržba rotujících strojů pomocí vibrací a špiček: Rotující stroje, jako jsou větrné turbíny, vodní turbíny, indukční motory atd., Čelí odlišnému druhu opotřebení a trhání. Většina těchto chyb a opotřebení způsobených abnormálními vibracemi v zařízení. Tyto stroje jsou často provozovány pod těžkými