Obsah:
- Zásoby
- Krok 1: Hardvér
- Krok 2: Definujte, ako by to malo fungovať
- Krok 3: Rozhranie štátneho automatu
- Krok 4: Ovládanie HMI
- Krok 5: Zaobchádzajte so štátmi
- Krok 6: Stopky
- Krok 7: Počítadlo
- Krok 8: Simulácia
- Krok 9: Získajte príklad
Video: HMI Arduino pomocou stavových strojov: 9 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
V tomto návode vám ukážem, ako pomocou nástrojov YAKINDU Statechart Tools realizovať jednoduché a rozšíriteľné rozhranie HMI pomocou štítu klávesnice LCD 16x2 pre Arduino.
Konečné stavové stroje (FSM) sú výkonným návrhovým vzorom na vývoj komplexných rozhraní človek -stroj (HMI). Pretože sa funkčnosť HMI môže zvýšiť, je užitočné použiť návrhový vzor, ako sú stavové stroje.
Úplný príklad je vložený do nástrojov YAKINDU Statechart Tools. Okrem toho bolo na kompiláciu a blikanie v IDE použité Eclipse C ++ IDE pre Arduino Plugin.
Stručná synopsa nástrojov YAKINDU Statechart Tools
S týmto nástrojom je možné vytvárať grafické stavové stroje. Umožňuje používateľovi generovať kód C, C ++ alebo Java zo stavového stroja. S týmto prístupom je možné model zmeniť alebo rozšíriť a užívateľ môže kód jednoducho vygenerovať znova a nemusí písať obyčajný zdrojový kód.
Zásoby
Diely:
- Arduino (Uno, Mega)
- USB kábel
- Štít klávesnice LCD 16x2
Náradie:
- Nástroje YAKINDU Statechart
- Eclipse C ++ IDE pre Arduino
Krok 1: Hardvér
Štít LCD klávesnice je možné jednoducho zapojiť do Arduina. Má LCD displej 16 x 2 a navyše má šesť tlačidiel:
- Vľavo
- Správny
- Hore
- Dolu
- Vyberte
- (Resetovať)
Je zrejmé, že ich možno použiť päť. Kľúče sú zapojené do deliča napätia a sú detekované pomocou kolíka A0 v závislosti od napätia. Na ich správnu detekciu som použil softvér na odskakovanie.
Krok 2: Definujte, ako by to malo fungovať
Aplikácia by mala byť schopná vykonávať tri veci.
- Tu chcem použiť tlačidlá na navigáciu medzi piatimi stavmi: hore, v strede, dole, vľavo a vpravo
- Stopky Jednoduché stopky, ktoré je možné spustiť, zastaviť a resetovať. Mali by sa zvyšovať každých 100 milisekúnd
- Počítadlo Tretia časť obsahuje jednoduché počítadlo nahor/nadol. Mal by byť schopný počítať kladné čísla a mal by byť resetovateľný
Aktívna ponuka (alebo stav) sa zobrazí na 16x2 LCD v hornom riadku. V spodnom riadku sa zobrazí aplikácia (Stav, Časovač alebo Počítadlo). Na navigáciu by sa malo použiť ľavé a pravé tlačidlo.
Krok 3: Rozhranie štátneho automatu
Tlačidlá budú odpojené a zapojené do štátneho automatu. Môžu byť použité ako v udalostiach v stavovom stroji. Okrem toho sú definované operácie na zobrazenie aktuálnej ponuky. A sú definované najmenej dve premenné, jedna pre časovač a jedna pre počítadlo.
rozhranie:
// tlačidlá ako vstupné udalosti v udalosti vpravo v prípade udalosti vľavo v udalosti hore v udalosti dole v udalosti vybrať // zobrazenie hodnôt špecifických pre HMI operácia displayLCDString (hodnota: reťazec, dĺžka: celé číslo, pozícia: celé číslo) operácia displayLCDInteger (hodnota: celé číslo, pozícia: integer) operation clearLCDRow (position: integer) internal: // variables for storage var cnt: integer var timeCnt: integer = 0
Po vygenerovaní kódu C ++ je potrebné odstrániť udalosti in a zapojiť ich do rozhrania. Tento útržok kódu ukazuje, ako to urobiť.
Najprv budú definované tlačidlá:
#define NONE 0 #define SELECT 1 #define LEFT 2 #define DOWN 3 #define UP 4 #define RIGHT 5
Potom je definovaná funkcia na čítanie tlačidla. Hodnoty sa môžu líšiť v závislosti od výrobcu štítu LCD.
static int readButton () {int vysledok = 0; výsledok = analogRead (0); if (výsledok <50) {return RIGHT; } if (result <150) {return UP; } if (result <300) {return DOWN; } if (result <550) {return LEFT; } if (result <850) {return SELECT; } vrátiť ŽIADNE; }
Na konci budú tlačidlá odstránené. Dobré výsledky som dosiahol s 80 ms. Akonáhle sa tlačidlo uvoľní, v prípade potreby sa zvýši.
int oldState = NONE; static void raiseEvents () {int buttonPressed = readButton (); oneskorenie (80); oldState = buttonPressed; if (oldState! = NONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> raise_select (); prestávka; } prípad VĽAVO: {stateMachine-> raise_left (); prestávka; } prípad DOLE: {stateMachine-> raise_down (); prestávka; } prípad NAHORU: {stateMachine-> raise_up (); prestávka; } prípad DOPRAVA: {stateMachine-> raise_right (); prestávka; } predvolené: {break; }}}}
Krok 4: Ovládanie HMI
Každý stav sa používa pre jednu časť ponuky. Existujú čiastkové stavy, v ktorých sa aplikácia - napríklad stopky - spustí.
Vďaka tomuto dizajnu je možné rozhranie ľahko rozšíriť. Ďalšie ponuky je možné jednoducho pridať pomocou rovnakého vzoru. Načítanie hodnoty senzora a jeho zobrazenie v štvrtej položke ponuky nie je žiadny veľký problém.
Ako ovládací prvok sa zatiaľ používa iba ľavá a pravá strana. Hore a dole ale možno použiť aj ako rozšírenie navigácie v hlavnom menu. Na zadanie konkrétnej položky ponuky sa použije iba tlačidlo výberu.
Krok 5: Zaobchádzajte so štátmi
Ponuka stavov ovládača sa používa iba ako ďalší príklad navigácie. Použitie hore, dole, doprava alebo doľava umožňuje prepínanie medzi stavmi. Aktuálny stav bude vždy vytlačený na druhom riadku LCD displeja.
Krok 6: Stopky
Stopky sú celkom jednoduché. Pôvodne sa hodnota časovača vynuluje. Časovač je možné spustiť ľavým tlačidlom a prepnúť pomocou ľavého a pravého tlačidla. Použitie nahor alebo nadol vynuluje časovač. Časovač je možné tiež vrátiť späť na nulu dvojitým stlačením tlačidla výberu - opustením ponuky a opätovným zadaním, pretože časovač sa vynuluje počiatočným zadaním stopiek.
Krok 7: Počítadlo
Existuje prinajmenšom počítadlo. Vstup do stavu počítadla vynuluje počítadlo. Spustiť sa dá akýmkoľvek tlačidlom, okrem tlačidla výberu. Je implementovaný ako jednoduché počítadlo nahor/nadol, ktorého hodnota nemôže byť menšia ako 0.
Krok 8: Simulácia
Krok 9: Získajte príklad
IDE si môžete stiahnuť tu: YAKINDU Statechart Tools
Keď si stiahnete IDE, nájdete príklad cez Súbor -> Novinka -> Príklad
Používanie pre domácich majstrov je bezplatné, ale môžete tiež použiť 30 -dňovú skúšobnú verziu.
Odporúča:
DIY -- Ako vyrobiť robota Spider, ktorý je možné ovládať pomocou smartfónu pomocou Arduino Uno: 6 krokov
DIY || Ako vyrobiť robota Spider, ktorý je možné ovládať pomocou smartfónu pomocou Arduino Uno: Pri vytváraní robota Spider sa dá naučiť veľa vecí o robotike. Rovnako ako výroba robotov je zábavná a náročná. V tomto videu vám ukážeme, ako vyrobiť robota Spider, ktorý môžeme ovládať pomocou nášho smartfónu (Androi
Ako vyrobiť dron pomocou Arduino UNO - Vytvorte kvadrokoptéru pomocou mikrokontroléra: 8 krokov (s obrázkami)
Ako vyrobiť dron pomocou Arduino UNO | Vytvorte kvadrokoptéru pomocou mikrokontroléra: Úvod Navštívte môj kanál na YouTube Drone je veľmi drahý gadget (produkt) na nákup. V tomto príspevku budem diskutovať o tom, ako to urobiť lacno? A ako si môžete takto vyrobiť svoj vlastný za lacnú cenu … V Indii všetky materiály (motory, ESC
Neopixel Ws2812 Rainbow LED žiara s M5stick-C - Spustenie Rainbow na Neopixeli Ws2812 pomocou M5stack M5stick C pomocou Arduino IDE: 5 krokov
Neopixel Ws2812 Rainbow LED žiara s M5stick-C | Spustenie Rainbow na Neopixel Ws2812 pomocou M5stack M5stick C pomocou Arduino IDE: Ahoj, v tomto návode sa naučíme používať LED diódy Neopixel ws2812 alebo LED pás alebo LED maticu alebo LED krúžok s vývojovou doskou m5stack m5stick-C s Arduino IDE a vyrobíme s ním dúhový vzor
Ovládanie serva pomocou MPU6050 medzi Arduino a ESP8266 pomocou HC-12: 6 krokov
Ovládanie serva pomocou MPU6050 medzi Arduino a ESP8266 pomocou HC-12: V tomto projekte riadime polohu servomotora pomocou mpu6050 a HC-12 na komunikáciu medzi Arduino UNO a ESP8266 NodeMCU
Prediktívna údržba rotujúcich strojov pomocou vibrácií a špičky: 8 krokov
Prediktívna údržba rotujúcich strojov pomocou vibrácií a špičky: Rotujúce stroje, ako sú veterné turbíny, vodné turbíny, indukčné motory atď., Čelia rôznym druhom opotrebovania a roztrhnutia. Väčšina týchto chýb a opotrebovania sú spôsobené abnormálnymi vibráciami v zariadení. Tieto stroje sú často prevádzkované v ťažkých