Sisukord:
- Tarvikud
- Samm: riistvara
- Samm: määratlege, kuidas see peaks toimima
- 3. samm: olekumasina liidestamine
- 4. samm: HMI juhtimine
- 5. samm: olekute käsitlemine
- 6. samm: stopper
- 7. samm: loendur
- 8. samm: simulatsioon
- 9. samm: hankige näide
Video: Arduino HMI olekumasinate kasutamine: 9 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
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
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
Rakendus peaks suutma teha kolme asja.
- Siin ma tahan kasutada nuppe viie oleku vahel navigeerimiseks: üleval, keskel, all, vasakul ja paremal
- Stopper Lihtne stopper, mida saab käivitada, peatada ja lähtestada. Seda tuleks suurendada iga 100 millisekundi järel
- 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
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 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
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:
DIY LED -massiiv (Arduino kasutamine): 7 sammu
DIY LED -massiiv (Arduino kasutamine): INTRO: Kas olete kunagi tahtnud teha lihtsat projekti, mis paneb LED -id liikuma? Ei? Seda ma arvasin. Noh, kui olete kunagi tahtnud midagi sarnast teha, olete õiges kohas
Disko tuled RGB -st Arduino kasutamine TinkerCadis: 3 sammu
Disco tuled RGB -lt Arduino kasutamine TinkerCadis: Kui olete RGB -ga ühendatud, on RGB värvi lihtne juhtida, kasutades PWM -väljundit või analoogväljundit, Arduino jaoks saate kasutada nippe 3, 5, 6 analogWrite () , 9, 10, 11, A0, A1, A2, A3, A4, A5 (klassikaliste Arduinode puhul, mis kasutavad Atmega328 või 1
Külastajate loendur Arduino kasutamine TinkerCadis: 3 sammu
Külastajate loendur Arduino kasutamine TinkerCadis: Mitu korda peame jälgima isikut/inimesi, kes külastavad mõnda kohta, näiteks seminari saali, konverentsisaali või kaubanduskeskust või templit. Seda projekti saab kasutada mis tahes konverentsiruumi või seminariruumi sisenevate külastajate lugemiseks ja kuvamiseks
Veetaseme näitaja Arduino kasutamine TinkerCadis: 3 sammu
Veetaseme näitaja Arduino kasutamine TinkerCadis: See artikkel räägib täielikult toimivast veetaseme regulaatorist, mis kasutab Arduino. Vooluring näitab vee taset paagis ja lülitab mootori sisse, kui veetase langeb allapoole määratud taset. Ahel lülitub automaatselt välja
UV -indeksi mõõtja ML8511 ULTRAVIOLET Arduino anduri kasutamine: 6 sammu
UV -indeksi mõõtja ML8511 ULTRAVIOLET -i anduri kasutamine Arduino: Selles õpetuses õpime, kuidas mõõta päikese UV -indeksit ML8511 ULTRAVIOLET -anduri abil. Vaadake videot! https://www.youtube.com/watch?v=i32L4nxU7_M