Turinys:
- Prekės
- 1 žingsnis: Aparatūra
- 2 žingsnis: apibrėžkite, kaip tai turėtų veikti
- 3 žingsnis: susiejimas su valstybės mašina
- 4 žingsnis: HMI valdymas
- 5 žingsnis: tvarkykite būsenas
- 6 žingsnis: chronometras
- 7 žingsnis: skaitiklis
- 8 žingsnis: modeliavimas
- 9 žingsnis: Gaukite pavyzdį
Video: „Arduino“HMI naudojant valstybines mašinas: 9 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
Šioje instrukcijoje aš jums parodysiu, kaip naudoti „YAKINDU Statechart Tools“, kad būtų sukurtas paprastas ir išplėstas HMI, naudojant „Arduino“16 x 2 LCD klaviatūros skydą.
„Finite State Machines“(FSM) yra galingas dizaino modelis kuriant sudėtingas žmogaus ir mašinos sąsajas (HMI). Kadangi HMI funkcionalumas gali padidėti, naudinga naudoti dizaino modelį, pavyzdžiui, būsenos mašinas.
Visas pavyzdys yra įtrauktas į „YAKINDU Statechart Tools“. Be to, „Eclipse C ++ IDE“, skirtas „Arduino“papildiniui, buvo naudojamas IDE kompiliavimui ir mirksėjimui.
Trumpas „YAKINDU Statechart Tools“santrauka
Naudojant šį įrankį, galima sukurti grafines būsenos mašinas. Tai leidžia vartotojui generuoti C, C ++ arba „Java“kodą iš būsenos mašinos. Taikant šį metodą, modelį galima pakeisti arba išplėsti, o vartotojas gali tiesiog sugeneruoti kodą ir jam nereikia rašyti paprasto šaltinio kodo.
Prekės
Dalys:
- „Arduino“(„Uno“, „Mega“)
- USB kabelis
- 16x2 LCD klaviatūros skydas
Įrankiai:
- „YAKINDU Statechart Tools“
- „Eclipse C ++ IDE“, skirtas „Arduino“
1 žingsnis: Aparatūra
LCD klaviatūros skydą galima tiesiog prijungti prie „Arduino“. Jis turi 16x2 LCD ekraną ir papildomai turi šešis mygtukus:
- Kairė
- Teisingai
- Aukštyn
- Žemyn
- Pasirinkite
- (Atstatyti)
Akivaizdu, kad penki iš jų gali būti naudojami. Klavišai prijungti prie įtampos skirstytuvo ir aptinkami naudojant kaištį A0, atsižvelgiant į įtampą. Naudojau programinės įrangos išjungimą, kad juos teisingai aptikčiau.
2 žingsnis: apibrėžkite, kaip tai turėtų veikti
Programa turėtų sugebėti atlikti tris dalykus.
- Čia noriu naudoti mygtukus, norėdami naršyti tarp penkių būsenų: viršuje, viduryje, apačioje, kairėje ir dešinėje
- Chronometras Paprastas chronometras, kurį galima paleisti, sustabdyti ir iš naujo nustatyti. Jis turėtų būti didinamas kas 100 milisekundžių
- Trečioje dalyje yra paprastas skaitiklis aukštyn/žemyn. Jis turėtų sugebėti suskaičiuoti teigiamus skaičius ir jį būtų galima iš naujo nustatyti
Aktyvus meniu (arba būsena) bus rodomas 16x2 LCD viršutinėje eilutėje. Programa (būsena, laikmatis arba skaitiklis) bus rodoma apatinėje eilutėje. Navigacijai reikia naudoti kairįjį ir dešinįjį mygtukus.
3 žingsnis: susiejimas su valstybės mašina
Mygtukai bus atjungti ir prijungti prie būsenos mašinos. Jie gali būti naudojami kaip įvykiai valstybinėje mašinoje. Be to, nustatomos operacijos, skirtos rodyti esamą meniu. Ir yra apibrėžti bent du kintamieji, vienas - laikmačiui ir vienas - skaitikliui.
sąsaja:
// mygtukai kaip įvesties įvykiai įvykyje dešinėje, įvykis kairėje, įvykis aukštyn, įvykis žemyn, įvykio pasirinkime // rodyti HMI specifines vertes, operacijos rodymas: integer) operacija clearLCDRow (pozicija: sveikasis skaičius) internal: // saugojimo kintamieji var cnt: integer var timeCnt: integer = 0
Sukūrus C ++ kodą, įvykiai turi būti atjungti ir prijungti prie sąsajos. Šis kodo fragmentas parodo, kaip tai padaryti.
Iš pradžių bus nustatyti šie mygtukai:
#define NONE 0 #define SELECT 1 #define LEFT 2 #define DOWN 3 #define UP 4 #define RIGHT 5
Tada yra nustatyta funkcija nuskaityti mygtuką. Vertės gali skirtis priklausomai nuo LCD skydo gamintojo.
static int readButton () {int rezultatas = 0; rezultatas = analogRead (0); if (rezultatas <50) {return RIGHT; } if (rezultatas <150) {return UP; } if (rezultatas <300) {return DOWN; } if (rezultatas <550) {return LEFT; } if (rezultatas <850) {return SELECT; } grąžinti NĖRA; }
Pabaigoje mygtukai bus išjungti. Aš padariau gerus rezultatus per 80 ms. Kai mygtukas bus atleistas, jis pakils atitinkamu atveju.
int oldState = NĖRA; static void raiseEvents () {int buttonPressed = readButton (); uždelsimas (80); oldState = mygtukasPaspaustas; if (oldState! = NONE &&& readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> raise_select (); pertrauka; } atvejis LEFT: {stateMachine-> raise_left (); pertrauka; } atvejis DOWN: {stateMachine-> raise_down (); pertrauka; } atvejis aukštyn: {stateMachine-> raise_up (); pertrauka; } atvejis TEISINGAS: {stateMachine-> raise_right (); pertrauka; } numatytasis: {break; }}}}
4 žingsnis: HMI valdymas
Kiekviena būsena naudojama vienai meniu daliai. Yra dalinių būsenų, kuriose programa, pavyzdžiui, chronometras, bus vykdoma.
Naudojant šį dizainą, sąsają galima lengvai išplėsti. Naudojant tą patį dizaino modelį galima tiesiog pridėti papildomų meniu. Jutiklio vertės skaitymas ir rodymas ketvirtame meniu elemente nėra didelis dalykas.
Kol kas tik kairė ir dešinė yra naudojami kaip valdiklis. Bet aukštyn ir žemyn taip pat galima naudoti kaip naršymo plėtinį pagrindiniame meniu. Tik pasirinkimo mygtukas bus naudojamas konkrečiam meniu elementui įvesti.
5 žingsnis: tvarkykite būsenas
Rankenų būsenų meniu naudojamas tik kaip tolesnis naršymo pavyzdys. Naudojant aukštyn, žemyn, dešinėn arba kairėn, galima perjungti būsenas. Esama būsena visada bus išspausdinta antroje LCD ekrano eilutėje.
6 žingsnis: chronometras
Chronometras yra gana paprastas. Iš pradžių laikmačio vertė bus iš naujo nustatyta. Laikmatį galima paleisti naudojant kairįjį mygtuką ir perjungti kairę ir dešinę. Naudojant aukštyn arba žemyn iš naujo nustatomas laikmatis. Laikmatį taip pat galima nustatyti į nulį, du kartus paspaudus pasirinkimo mygtuką - išeinant iš meniu ir dar kartą įeinant, nes laikmatis bus nustatytas į nulį iš pradžių įvedus chronometrą.
7 žingsnis: skaitiklis
Bent jau yra įdiegtas skaitiklis. Įvedus skaitiklio būseną, skaitiklis iš naujo nustatomas. Jį galima paleisti bet kuriuo mygtuku, išskyrus pasirinkimo mygtuką. Jis įdiegtas kaip paprastas aukštyn/žemyn skaitiklis, kurio vertė negali būti mažesnė nei 0.
8 žingsnis: modeliavimas
9 žingsnis: Gaukite pavyzdį
IDE galite atsisiųsti čia: „YAKINDU Statechart Tools“
Atsisiuntę IDE pavyzdį rasite naudodami Failas -> Naujas -> Pavyzdys
Mėgėjams tai nemokama, tačiau taip pat galite naudoti 30 dienų bandomąją versiją.
Rekomenduojamas:
Kaip sukurti MP3 grotuvą naudojant LCD naudojant „Arduino“ir „DFPlayer Mini“MP3 grotuvo modulį: 6 žingsniai
Kaip sukurti MP3 grotuvą naudojant skystųjų kristalų ekraną naudojant „Arduino“ir „DFPlayer Mini“MP3 grotuvo modulį: Šiandien mes pagaminsime MP3 grotuvą su LCD, naudodami „Arduino“ir „DFPlayer“mini MP3 grotuvo modulį. Projektas gali nuskaityti MP3 failus SD kortelėje ir gali pristabdyti ir žaisti taip pat, kaip ir prieš 10 metų. Taip pat jame yra linksma ankstesnė ir kita daina
ATmega328 programavimas naudojant „Arduino IDE“naudojant 8MHz kristalą: 4 žingsniai
„ATmega328“programavimas naudojant „Arduino IDE“naudojant 8MHz kristalą: šioje Instrukcinėje medžiagoje aprašysiu žingsnis po žingsnio programavimo ATmega328P IC (tas pats mikrovaldiklis, esantis „Arudino UNO“) programavimą, naudojant „Arduino IDE“ir „Arduino UNO“kaip programuotoją, kad padarytumėte save pasirinktinis „Arduino“, kad galėtumėte kurti savo projektus
Valdymas visame pasaulyje naudojant internetą naudojant „Arduino“: 4 žingsniai
Valdymas visame pasaulyje naudojant internetą naudojant „Arduino“: Sveiki, aš esu Rithik. Mes ketiname sukurti valdomą internetą, naudojant jūsų telefoną. Ketiname naudoti tokią programinę įrangą kaip „Arduino IDE“ir „Blynk“. Tai paprasta ir, jei pavyko, galite valdyti tiek daug elektroninių komponentų, kokių norite
„Neopixel Ws2812 Rainbow“LED švytėjimas su M5stick-C - Vaivorykštės veikimas „Neopixel Ws2812“naudojant „M5stack M5stick C“naudojant „Arduino IDE“: 5 žingsniai
„Neopixel Ws2812 Rainbow“LED švytėjimas su M5stick-C | Vaivorykštės veikimas „Neopixel Ws2812“naudojant „M5stack M5stick C“naudojant „Arduino IDE“: Sveiki vaikinai, šioje instrukcijoje mes išmoksime naudoti neopixel ws2812 šviesos diodus arba LED juostelę arba LED matricą arba LED žiedą su „m5stack m5stick-C“kūrimo lenta su „Arduino IDE“ir mes padarysime vaivorykštinis raštas su juo
Belaidis nuotolinis valdymas naudojant 2,4 GHz NRF24L01 modulį su „Arduino“- Nrf24l01 4 kanalų / 6 kanalų siųstuvo imtuvas keturkopteriui - Rc sraigtasparnis - Rc lėktuvas naudojant „Arduino“: 5 žingsniai (su nuotraukomis)
Belaidis nuotolinis valdymas naudojant 2,4 GHz NRF24L01 modulį su „Arduino“| Nrf24l01 4 kanalų / 6 kanalų siųstuvo imtuvas keturkopteriui | Rc sraigtasparnis | Rc lėktuvas naudojant „Arduino“: valdyti Rc automobilį | Kvadopteris | Dronas | RC plokštuma | RC valtis, mums visada reikia imtuvo ir siųstuvo, tarkime, kad RC QUADCOPTER mums reikia 6 kanalų siųstuvo ir imtuvo, o tokio tipo TX ir RX yra per brangus, todėl mes jį pagaminsime savo