Sisukord:

Arduino HMI olekumasinate kasutamine: 9 sammu
Arduino HMI olekumasinate kasutamine: 9 sammu

Video: Arduino HMI olekumasinate kasutamine: 9 sammu

Video: Arduino HMI olekumasinate kasutamine: 9 sammu
Video: HMI Dashboard Arduino Project 2024, November
Anonim
Arduino HMI, kasutades riigimasinaid
Arduino HMI, kasutades riigimasinaid

Selles juhendis näitan teile, kuidas kasutada YAKINDU olekukaardi tööriistu lihtsa ja laiendatava HMI loomiseks, kasutades Arduino jaoks 16x2 LCD klaviatuurikilpi.

Finite State Machines (FSM) on võimas disainimuster keerukate inimmasina liideste (HMI) väljatöötamiseks. Kuna HMI funktsionaalsus võib suureneda, on kasulik kasutada kujundusmustrit nagu olekumasinad.

Kogu näide on integreeritud YAKINDU olekukaardi tööriistadesse. Lisaks on IDE koostamiseks ja vilkumiseks kasutatud Arduino pistikprogrammi jaoks mõeldud Eclipse C ++ IDE -d.

YAKINDU olekukaardi tööriistade lühikokkuvõte

Selle tööriista abil on võimalik luua graafilisi olekumasinaid. See võimaldab kasutajal olekumasinast genereerida C-, C ++ või Java -koodi. Selle lähenemisviisiga saab mudelit muuta või laiendada ning kasutaja saab koodi lihtsalt uuesti genereerida ega pea kirjutama lihtsat lähtekoodi.

Tarvikud

Osad:

  • Arduino (Uno, Mega)
  • USB -kaabel
  • 16x2 LCD klahvistiku kilp

Tööriistad:

  • YAKINDU olekukaardi tööriistad
  • Eclipse C ++ IDE Arduino jaoks

Samm: riistvara

Image
Image

LCD -klahvistiku kilbi saab lihtsalt Arduinoga ühendada. Sellel on 16x2 LCD -ekraan ja lisaks kuus nuppu:

  • Vasakule
  • Õige
  • Üles
  • Alla
  • Valige
  • (Lähtesta)

Ilmselgelt saab neist kasutada viit. Võtmed on ühendatud pingejagajaga ja need tuvastatakse pinge A0 abil sõltuvalt pingest. Olen nende õigeks tuvastamiseks kasutanud tarkvara väljalülitamist.

Samm: määratlege, kuidas see peaks toimima

HMI juhtimine
HMI juhtimine

Rakendus peaks suutma teha kolme asja.

  1. Siin ma tahan kasutada nuppe viie oleku vahel navigeerimiseks: üleval, keskel, all, vasakul ja paremal
  2. Stopper Lihtne stopper, mida saab käivitada, peatada ja lähtestada. Seda tuleks suurendada iga 100 millisekundi järel
  3. Loendur Kolmas osa sisaldab lihtsat üles/alla loendurit. See peaks olema võimeline loendama positiivseid numbreid ja see tuleks lähtestada

Aktiivne menüü (või olek) kuvatakse 16x2 LCD ülemisel real. Rakendus (olek, taimer või loendur) kuvatakse alumisel real. Navigeerimiseks tuleks kasutada vasakut ja paremat nuppu.

3. samm: olekumasina liidestamine

Nupud tühistatakse ja ühendatakse olekumasinaga. Neid saab kasutada olekumasina sündmuste jaoks. Lisaks on praeguse menüü kuvamiseks määratud toimingud. Ja vähemalt kaks muutujat, üks taimerile ja teine loendurile, on määratletud.

liides:

// nupud kui sisendsündmused sündmusel paremal juhul kui sündmus vasakul sündmusel üleval sündmusel allapoole sündmuse valimisel // kuva HMI spetsiifilised väärtused operatsiooni kuvaLCDString (väärtus: string, pikkus: täisarv, positsioon: täisarv) operatsiooni kuvaLCDInteger (väärtus: täisarv, asukoht: täisarv) operatsioon selge

Pärast C ++ koodi genereerimist tuleb in -sündmused tagasi lükata ja ühendada liidesega. See koodilõik näitab, kuidas seda teha.

Alguses määratakse nupud:

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

Seejärel on nupu lugemiseks määratletud funktsioon. Sõltuvalt LCD -kilbi tootjast võivad väärtused erineda.

staatiline int readButton () {int tulemus = 0; tulemus = analogRead (0); if (tulemus <50) {return RIGHT; } if (tulemus <150) {return UP; } if (tulemus <300) {return DOWN; } if (tulemus <550) {return LEFT; } if (tulemus <850) {return SELECT; } tagastama MITTE; }

Lõpuks tühistatakse nupud. Tegin häid tulemusi 80 ms -ga. Kui nupp vabastatakse, tõstab see vastavalt juhust.

int oldState = NONE; staatiline void raiseEvents () {int nupp Vajutatud = readButton (); viivitus (80); oldState = nupp Vajutatud; if (oldState! = NOONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> raise_select (); murda; } juhtum LEFT: {stateMachine-> raise_left (); murda; } juhtum ALLA: {stateMachine-> raise_down (); murda; } juhtum ÜLES: {stateMachine-> raise_up (); murda; } juhtum PAREM: {stateMachine-> raise_right (); murda; } vaikimisi: {break; }}}}

4. samm: HMI juhtimine

Iga olekut kasutatakse menüü ühe osa jaoks. On osariike, kus rakendus - näiteks stopper - käivitatakse.

Selle disainiga saab liidest hõlpsasti laiendada. Täiendavaid menüüsid saab sama kujundusmustri abil lihtsalt lisada. Anduri väärtuse lugemine ja selle kuvamine neljandas menüüelemendis pole suur asi.

Praegu kasutatakse juhtnupuna ainult vasakut ja paremat. Kuid üles ja alla saab kasutada ka peamenüü navigeerimislaiendina. Konkreetse menüüelemendi sisestamiseks kasutatakse ainult valimisnuppu.

5. samm: olekute käsitlemine

Osariikide käsitsemine
Osariikide käsitsemine

Käepideme olekute menüüd kasutatakse ainult navigeerimise täiendava näitena. Üles, alla, paremale või vasakule kasutamine võimaldab olekute vahel vahetada. Praegune olek prinditakse alati LCD -ekraani teisele reale.

6. samm: stopper

Stopper
Stopper

Stopper on üsna lihtne. Esialgu lähtestatakse taimeri väärtus. Taimerit saab käivitada vasaku nupuga ja lülitada vasakule ja paremale. Üles või alla vajutades lähtestatakse taimer. Taimeri saab nullida ka valiku nupu abil kaks korda - menüüst väljudes ja uuesti sisenedes, kuna taimer seatakse stopperi esialgse sisestamisega nulli.

7. samm: loendur

Loendur
Loendur

Vähemalt on olemas loendur. Loenduri olekusse sisenemine lähtestab loenduri. Seda saab käivitada mis tahes nupu abil, välja arvatud valimisnupp. Seda rakendatakse lihtsa üles/alla loendurina, mille väärtus ei tohi olla väiksem kui 0.

8. samm: simulatsioon

9. samm: hankige näide

IDE saate alla laadida siit: YAKINDU olekukaardi tööriistad

Kui olete IDE alla laadinud, leiate näite menüüst Fail -> Uus -> Näide

Harrastajatele on see tasuta kasutamiseks, kuid saate kasutada ka 30 -päevast prooviperioodi.

Soovitan: