Sadržaj:

Arduino HMI pomoću državnih mašina: 9 koraka
Arduino HMI pomoću državnih mašina: 9 koraka

Video: Arduino HMI pomoću državnih mašina: 9 koraka

Video: Arduino HMI pomoću državnih mašina: 9 koraka
Video: #14 OP320 HMI Modbus komunikacija | Outseal Arduino PLC 2024, Novembar
Anonim
Arduino HMI Korištenje državnih strojeva
Arduino HMI Korištenje državnih strojeva

U ovom Instructable -u 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.

Mašine konačnih stanja (FSM) moćni su uzorci dizajna za razvoj složenih interfejsa ljudskih mašina (HMI). Kako se funkcionalnost HMI -a može povećati, korisno je koristiti dizajnerske uzorke poput državnih strojeva.

Kompletan primjer ugrađen je u YAKINDU alatke dijagrama stanja. Dodatno, Eclipse C ++ IDE za Arduino dodatak korišten je za kompajliranje i fleširanje u IDE -u.

Kratak sinopsis YAKINDU alata za grafikone stanja

Pomoću ovog alata moguće je kreirati grafičke strojeve stanja. Omogućava korisniku generiranje C, C ++ ili Java koda s državne mašine. Ovim pristupom model se može promijeniti ili proširiti, a korisnik može jednostavno ponovno generirati kod i ne mora pisati običan izvorni kod.

Supplies

Dijelovi:

  • Arduino (Uno, Mega)
  • USB kabel
  • 16x2 LCD štitnik za tastaturu

Alati:

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

Korak 1: Hardver

Image
Image

Štitnik LCD tipkovnice može se jednostavno priključiti na Arduino. Ima 16x2 LCD ekran i dodatno ima šest tastera:

  • Lijevo
  • Tačno
  • Gore
  • Dolje
  • Odaberite
  • (Resetovati)

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

Korak 2: Definirajte kako bi to trebalo funkcionirati

HMI kontrola
HMI kontrola

Aplikacija bi trebala biti sposobna raditi tri stvari.

  1. Rukovanje stanjima Ovdje želim koristiti gumbe za kretanje između pet stanja: Gore, Srednje, Dolje, 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 ekranu 16x2 u gornjoj liniji. Aplikacija (država, mjerač vremena ili brojač) bit će prikazana u donjem redu. Za navigaciju treba koristiti lijevo i desno dugme.

Korak 3: Povezivanje državne mašine

Dugmad će biti oslobođena i povezana sa državnom mašinom. Mogu se koristiti kao u događajima u državnoj mašini. Dodatno, definisane su operacije za prikaz trenutnog menija. Definirane su najmanje dvije varijable, jedna za mjerač vremena i jedna za brojač.

interfejs:

// tipke 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čne vrijednosti operacija displayLCDString (vrijednost: niz, dužina: cijeli broj, pozicija: 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, in -događaji se moraju otkloniti i spojiti na sučelje. Ovaj isječak koda pokazuje kako to učiniti.

Prvo će se definirati gumbi:

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

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

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

Na kraju će se dugmad otkloniti. Napravio sam dobre rezultate sa 80 ms. Kada se dugme 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 (); break; } slučaj LIJEVO: {stateMachine-> raise_left (); break; } slučaj DOLE: {stateMachine-> raise_down (); break; } slučaj UP: {stateMachine-> raise_up (); break; } slučaj DESNO: {stateMachine-> raise_right (); break; } default: {break; }}}}

Korak 4: HMI kontrola

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

Sa ovim dizajnom, sučelje se može lako proširiti. Dodatni meniji mogu se jednostavno dodati upotrebom istog uzorka dizajna. Očitavanje vrijednosti senzora i prikazivanje u četvrtoj stavci menija 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. Samo dugme za odabir će se koristiti za unos određene stavke menija.

Korak 5: Rukovanje državama

Handle States
Handle States

Meni 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 će uvijek biti ispisano u drugom retku na LCD ekranu.

Korak 6: Štoperica

Štoperica
Štoperica

Štoperica je vrlo jednostavna. U početku će se vrijednost timera resetirati. Tajmer se može pokrenuti korištenjem lijevog dugmeta i prebacivati pomoću lijeve i desne strane. Korištenje gore ili dolje poništava tajmer. Tajmer se također može vratiti na nulu pomoću dvaput tipke za odabir - napuštanjem izbornika i ponovnim unosom u njega, jer će se mjerač vremena postaviti na nulu početnim unosom štoperice.

Korak 7: Brojač

Counter
Counter

Barem je implementiran brojač. Unošenjem brojača stanje se resetuje. Može se pokrenuti bilo kojim tasterom, osim dugmeta 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 grafikona stanja

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

Besplatno je za ljubitelje, ali možete koristiti i probni period od 30 dana.

Preporučuje se: