Sadržaj:

Arduino HMI pomoću državnih strojeva: 9 koraka
Arduino HMI pomoću državnih strojeva: 9 koraka

Video: Arduino HMI pomoću državnih strojeva: 9 koraka

Video: Arduino HMI pomoću državnih strojeva: 9 koraka
Video: #14 OP320 HMI Modbus komunikacija | Outseal Arduino PLC 2024, Studeni
Anonim
Arduino HMI pomoću državnih strojeva
Arduino HMI pomoću državnih strojeva

U ovom Instructableu pokazat ću vam kako koristiti YAKINDU alate za dijagrame stanja za ostvarivanje jednostavnog i proširivog HMI -a pomoću štitnika LCD tipkovnice 16x2 za Arduino.

Konačno -strojni strojevi (FSM) moćni su uzorak dizajna za razvoj složenih sučelja ljudskih strojeva (HMI). Kako se funkcionalnost HMI -a može povećati, korisno je koristiti dizajnerske uzorke poput državnih strojeva.

Cjeloviti primjer ugrađen je u YAKINDU alate za dijagrame stanja. Dodatno, Eclipse C ++ IDE za Arduino dodatak korišten je za sastavljanje i bljeskanje u IDE -u.

Kratki sadržaj alata YAKINDU Statechart Tools

Pomoću ovog alata moguće je izraditi grafičke strojeve stanja. Omogućuje korisniku generiranje C, C ++ ili Java koda s državnog stroja. Ovim pristupom model se može promijeniti ili proširiti, a korisnik može jednostavno ponovno generirati kôd i ne mora pisati običan izvorni kôd.

Pribor

Dijelovi:

  • Arduino (Uno, Mega)
  • USB kabl
  • Štitnik LCD tipkovnice 16x2

Alati:

  • YAKINDU Alati za grafikone stanja
  • Eclipse C ++ IDE za Arduino

Korak 1: Hardver

Image
Image

Štit LCD tipkovnice može se jednostavno priključiti na Arduino. Ima 16x2 LCD zaslon i dodatno ima šest tipki:

  • Lijevo
  • Pravo
  • Gore
  • Dolje
  • Odaberi
  • (Poništi)

Očito se njih pet može koristiti. Tipke su spojene na razdjelnik napona i otkrivaju se pomoću Pin A0 ovisno o naponu. Upotrijebio sam softversko uklanjanje da ih ispravno otkrijem.

Korak 2: Definirajte kako bi to trebalo funkcionirati

HMI kontrola
HMI kontrola

Aplikacija bi trebala biti sposobna učiniti tri stvari.

  1. Rukovanje stanjima Ovdje želim koristiti gumbe za navigaciju između pet stanja: gornje, srednje, donje, lijevo i desno
  2. Štoperica Jednostavna štoperica koja se može pokrenuti, zaustaviti i resetirati. Treba ga povećavati svakih 100 milisekundi
  3. Brojač Treći dio sadrži jednostavan brojač gore/dolje. Trebao bi moći brojati pozitivne brojeve i trebao bi se resetirati

Aktivni izbornik (ili stanje) bit će prikazan na LCD -u 16x2 u gornjem retku. Aplikacija (država, mjerač vremena ili brojač) bit će prikazana u donjem retku. Za navigaciju treba koristiti lijevi i desni gumb.

Korak 3: Povezivanje državnog stroja

Gumbi će se ukloniti i spojiti na državni stroj. Mogu se koristiti kao u događajima u državnom stroju. Dodatno, definirane su operacije za prikaz trenutnog izbornika. Definirane su najmanje dvije varijable, jedna za mjerač vremena i jedna za brojač.

sučelje:

// gumbi kao ulazni događaji u desnom desnom u događaju lijevom u slučaju gore u događaju dolje u odabiru događaja // prikaz HMI specifičnih vrijednosti operacija displayLCDString (vrijednost: niz, duljina: cijeli broj, položaj: cijeli broj) operacija displayLCDInteger (vrijednost: cijeli broj, položaj: integer) operacija clearLCDRow (position: integer) internal: // varijable za pohranu var cnt: integer var timeCnt: integer = 0

Nakon generiranja C ++ koda, događaji in moraju se otkloniti i spojiti na sučelje. Ovaj isječak koda pokazuje kako to učiniti.

Isprva će se definirati gumbi:

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

Zatim postoji definirana funkcija za čitanje gumba. Vrijednosti se mogu razlikovati, ovisno o proizvođaču LCD zaslona.

static int readButton () {int rezultat = 0; rezultat = analogRead (0); if (rezultat <50) {return RIGHT; } if (rezultat <150) {return UP; } if (rezultat <300) {return DOLJE; } if (rezultat <550) {return LIJEVO; } if (rezultat <850) {return SELECT; } return NONE; }

Na kraju će se gumbi odvojiti. Napravio sam dobre rezultate sa 80 ms. Nakon što se gumb otpusti, u slučaju će se podići.

int oldState = NONE; static void raiseEvents () {int buttonPressed = readButton (); kašnjenje (80); oldState = buttonPressed; if (oldState! = NONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> raise_select (); pauza; } slučaj LIJEVO: {stateMachine-> raise_left (); pauza; } slučaj DOLJE: {stateMachine-> raise_down (); pauza; } slučaj UP: {stateMachine-> raise_up (); pauza; } slučaj DESNO: {stateMachine-> raise_right (); pauza; } zadano: {break; }}}}

Korak 4: HMI kontrola

Svako stanje se koristi za jedan dio izbornika. Postoje poddržava u kojima će se aplikacija - na primjer štoperica - izvršavati.

Ovim dizajnom sučelje se može lako proširiti. Dodatni se izbornici mogu jednostavno dodati pomoću istog uzorka dizajna. Očitati vrijednost senzora i prikazati je u četvrtoj stavci izbornika nije velika stvar.

Za sada se samo kontrola koristi lijevo i desno. No gore i dolje također se može koristiti kao navigacijsko proširenje u glavnom izborniku. Za odabir određene stavke izbornika koristit će se samo gumb za odabir.

Korak 5: Upravljajte državama

Rukovati državama
Rukovati državama

Izbornik stanja ručke koristi se samo kao daljnji primjer navigacije. Korištenje gore, dolje, desno ili lijevo omogućuje prebacivanje između stanja. Trenutno stanje uvijek će biti ispisano u drugom retku na LCD zaslonu.

Korak 6: Štoperica

Štoperica
Štoperica

Štoperica je vrlo jednostavna. U početku će se vrijednost timera resetirati. Odbrojavanje vremena može se pokrenuti pomoću lijevog gumba i prebacivati pomoću lijeve i desne strane. Korištenje gore ili dolje poništava mjerač vremena. Mjerač vremena također se može vratiti na nulu pomoću dvaput tipke za odabir - napuštajući izbornik i ponovno ga ulazeći, jer će se mjerač vremena postaviti na nulu početnim unosom štoperice.

Korak 7: Brojač

Brojač
Brojač

Barem je implementiran brojač. Ulazak u stanje brojača poništava brojač. Može se pokrenuti bilo kojim gumbom, osim gumba za odabir. Implementirano je kao jednostavan brojač gore/dolje, čija vrijednost ne može biti manja od 0.

Korak 8: Simulacija

Korak 9: Uzmite primjer

IDE možete preuzeti ovdje: YAKINDU Alati za grafikone stanja

Nakon što preuzmete IDE, primjer ćete pronaći putem Datoteka -> Novi -> Primjer

Besplatno ga možete koristiti za ljubitelje, ali možete koristiti i probno razdoblje od 30 dana.

Preporučeni: