Satura rādītājs:
- Piegādes
- 1. darbība: aparatūra
- 2. solis: definējiet, kā tam vajadzētu darboties
- 3. darbība. Valsts iekārtas saskarne
- 4. solis: HMI kontrole
- 5. darbība: rīkojieties ar valstīm
- 6. solis: Hronometrs
- 7. solis: skaitītājs
- 8. darbība: simulācija
- 9. solis: iegūstiet piemēru
Video: Arduino HMI, izmantojot valsts mašīnas: 9 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:54
Šajā pamācībā es parādīšu, kā izmantot YAKINDU stāvokļa diagrammas rīkus, lai izveidotu vienkāršu un paplašināmu HMI, izmantojot 16x2 LCD tastatūras vairogu Arduino.
Finite State Machines (FSM) ir spēcīgs dizaina modelis, lai izstrādātu sarežģītas cilvēka un mašīnas saskarnes (HMI). Tā kā HMI funkcionalitāte var palielināties, ir lietderīgi izmantot tādu dizaina modeli kā valsts iekārtas.
Pilns piemērs ir iestrādāts YAKINDU Statechart Tools. Turklāt Eclipse C ++ IDE Arduino spraudnim ir izmantots IDE apkopošanai un mirgošanai.
Īss YAKINDU valsts diagrammas rīku kopsavilkums
Izmantojot šo rīku, ir iespējams izveidot grafiskā stāvokļa mašīnas. Tas ļauj lietotājam ģenerēt C, C ++ vai Java kodu no valsts iekārtas. Izmantojot šo pieeju, modeli var mainīt vai paplašināt, un lietotājs var vienkārši ģenerēt kodu un viņam nav jāraksta vienkāršs avota kods.
Piegādes
Daļas:
- Arduino (Uno, Mega)
- USB kabelis
- 16x2 LCD tastatūras vairogs
Rīki:
- YAKINDU stāvokļa diagrammas rīki
- Eclipse C ++ IDE Arduino
1. darbība: aparatūra
LCD tastatūras vairogu var vienkārši pievienot Arduino. Tam ir 16x2 LCD displejs un papildus sešas pogas:
- Pa kreisi
- Taisnība
- Uz augšu
- Uz leju
- Izvēlieties
- (Atiestatīt)
Acīmredzot piecas no tām var izmantot. Atslēgas ir savienotas ar sprieguma dalītāju un tiek noteiktas, izmantojot tapu A0 atkarībā no sprieguma. Esmu izmantojis programmatūras atcelšanu, lai tos pareizi atklātu.
2. solis: definējiet, kā tam vajadzētu darboties
Lietojumprogrammai jāspēj veikt trīs lietas.
- Šeit es vēlos izmantot pogas, lai pārvietotos starp pieciem stāvokļiem: augšā, vidū, apakšā, pa kreisi un pa labi
- Hronometrs Vienkāršs hronometrs, kuru var iedarbināt, apturēt un atiestatīt. To vajadzētu palielināt ik pēc 100 milisekundēm
- Trešajā daļā ir vienkāršs augšup/lejup skaitītājs. Tam vajadzētu būt iespējai saskaitīt pozitīvus skaitļus, un tam vajadzētu būt atiestatītam
Aktīvā izvēlne (vai stāvoklis) tiks parādīta 16x2 LCD augšējā rindā. Lietojumprogramma (stāvoklis, taimeris vai skaitītājs) tiks parādīta apakšējā rindā. Navigācijai jāizmanto kreisā un labā poga.
3. darbība. Valsts iekārtas saskarne
Pogas tiks atvienotas un savienotas ar valsts iekārtu. Tos var izmantot kā notikumus valsts mašīnā. Turklāt tiek definētas darbības, lai parādītu pašreizējo izvēlni. Ir definēti vismaz divi mainīgie - viens taimerim un viens skaitītājam.
saskarne:
// pogas kā ievades notikumi notikumā pa labi notikumā pa kreisi notikumā uz augšu notikumā uz leju notikuma atlasē // parādīt HMI specifiskās vērtības darbības displejsLCDString (vērtība: virkne, garums: vesels skaitlis, pozīcija: vesels skaitlis) darbības displejsLCDInteger (vērtība: vesels skaitlis, pozīcija: vesels skaitlis) darbība clearLCDRow (pozīcija: vesels skaitlis) iekšējais: // mainīgie uzglabāšanai var cnt: vesels skaitlis var laiks
Pēc C ++ koda ģenerēšanas notikumiem ir jābūt atslēgtiem un savienotiem ar saskarni. Šis koda fragments parāda, kā to izdarīt.
Sākumā tiks definētas pogas:
#define NONE 0 #define SELECT 1 #define LEFT 2 #define DOWN 3 #define UP 4 #define RIGHT 5
Pēc tam ir noteikta funkcija pogas nolasīšanai. Atkarībā no LCD vairoga ražotāja vērtības var atšķirties.
static int readButton () {int rezultāts = 0; rezultāts = analogRead (0); ja (rezultāts <50) {return RIGHT; } ja (rezultāts <150) {return UP; } ja (rezultāts <300) {return DOWN; } ja (rezultāts <550) {return LEFT; } ja (rezultāts <850) {return SELECT; } atgriezt NAV; }
Beigās pogas tiks atslēgtas. Man bija labi rezultāti ar 80 ms. Tiklīdz poga tiks atbrīvota, tā paaugstinās atbilstošo.
int oldState = NAV; static void raiseEvents () {int buttonPressed = readButton (); kavēšanās (80); oldState = pogaNospiests; if (oldState! = NONE && read read Button () == NONE) {switch (oldState) {case SELECT: {stateMachine-> raise_select (); pārtraukums; } gadījums LEFT: {stateMachine-> raise_left (); pārtraukums; } gadījums LEJU: {stateMachine-> raise_down (); pārtraukums; } gadījums UP: {stateMachine-> raise_up (); pārtraukums; } gadījums PAREIZI: {stateMachine-> raise_right (); pārtraukums; } noklusējums: {break; }}}}
4. solis: HMI kontrole
Katrs stāvoklis tiek izmantots vienai izvēlnes daļai. Ir apakšnosacījumi, kuros lietojumprogramma, piemēram, hronometrs, tiks izpildīta.
Izmantojot šo dizainu, saskarni var viegli paplašināt. Papildu izvēlnes var vienkārši pievienot, izmantojot to pašu dizaina modeli. Sensora vērtības nolasīšana un parādīšana ceturtajā izvēlnes vienumā nav nekas īpašs.
Pagaidām kā kontrole tiek izmantota tikai pa kreisi un pa labi. Bet augšup un lejup var izmantot arī kā navigācijas paplašinājumu galvenajā izvēlnē. Lai ievadītu noteiktu izvēlnes vienumu, tiks izmantota tikai atlases poga.
5. darbība: rīkojieties ar valstīm
Roktura stāvokļu izvēlne tiek izmantota tikai kā papildu navigācijas piemērs. Izmantojot augšup, lejup, pa labi vai pa kreisi, var pārslēgties starp stāvokļiem. Pašreizējais stāvoklis vienmēr tiks drukāts LCD displeja otrajā rindā.
6. solis: Hronometrs
Hronometrs ir pavisam vienkāršs. Sākotnēji taimera vērtība tiks atiestatīta. Taimeri var iedarbināt, izmantojot kreiso pogu, un pārslēgt, izmantojot kreiso un labo pusi. Izmantojot augšup vai lejup, taimeris tiek atiestatīts. Taimeri var arī atiestatīt uz nulli, divreiz izmantojot izvēles pogu - izejot no izvēlnes un vēlreiz ieejot tajā, jo taimeris tiks iestatīts uz nulli, sākotnēji ievadot hronometru.
7. solis: skaitītājs
Vismaz ir ieviests skaitītājs. Ievadot skaitītāja stāvokli, skaitītājs tiek atiestatīts. To var sākt, izmantojot jebkuru pogu, izņemot izvēles pogu. Tas ir ieviests kā vienkāršs augšup/lejup skaitītājs, kura vērtība nedrīkst būt mazāka par 0.
8. darbība: simulācija
9. solis: iegūstiet piemēru
Jūs varat lejupielādēt IDE šeit: YAKINDU Statechart Tools
Kad esat lejupielādējis IDE, piemēru varat atrast, izmantojot Fails -> Jaunums -> Piemērs
Hobijiem to var izmantot bez maksas, taču varat izmantot arī 30 dienu izmēģinājuma periodu.
Ieteicams:
Dezinfekcijas mašīnas simulācija, izmantojot TINKERCAD: 6 soļi
DEZINFEKCIJAS MAŠĪNAS SIMULĀCIJA, Izmantojot TINKERCAD: Šajā neizpētāmajā mēs redzēsim, kā veikt dezinfekcijas mašīnas simulāciju. Kontaktpersona mazāk Automātiskais dezinfekcijas līdzeklis ir dezinfekcijas iekārta, jo mašīnas darbināšanai mēs neizmantojam rokas, bet infrasarkanā tuvuma sensoru
MODERNAS PĀRDOŠANAS MAŠĪNAS GUI, IZMANTOJOT RASPBERRY PI AR DJANGO: 4 soļi
MODERNĀS PĀRDOŠANAS MAŠĪNAS GUI, IZMANTOJOT RASPBERRY PI AR DJANGO: Vai mēs varam izveidot modernu GUI, izmantojot tirdzniecības automātu tīmekļa valodas? Atbilde uz iepriekš minēto ir jā. Mēs varam tos izmantot tirdzniecības automātiem, izmantojot kioska režīmu. Šo ideju es jau izmantoju savā esošajā projektā, un tā darbojas labi, un mēs pārbaudām
Arduino PLC 32 I/O+valsts iekārta+SCADA vai HMI: 8 soļi
Arduino PLC 32 I/O+valsts iekārta+SCADA vai HMI: daudzi veidi, kā programmēt, kontrolēt un uzraudzīt rūpniecisko sistēmu, izmantojot arduino
Veļas mazgājamās mašīnas paziņojumi, izmantojot MESH: 4 soļi (ar attēliem)
Paziņojumi veļas mašīnai, izmantojot MESH: Hmm! Es aizmirsu par veļas mazgājamās mašīnas drēbēm … Vai jūs vienmēr aizmirstat paņemt drēbes pēc mazgāšanas? Šī recepte uzlabos jūsu veļas mazgājamo mašīnu, lai saņemtu paziņojumus, izmantojot Gmail vai IFTTT, tiklīdz jūsu drēbes būs gatavas attēlot
Pārveidojiet veco atmiņas karti datu bāzē, izmantojot valsts līmeņa šifrēšanu: 4 soļi
Pārveidojiet veco atmiņas karti datu bāzē, izmantojot valdības līmeņa šifrēšanu: Vai jums ir veca atmiņas karte? Vai jums ir jāaizsargā vērtīgi faili? Uzziniet, kā labāk aizsargāt savus failus, nekā vienkāršs RAR arhīvs ar paroli; jo šajā mūsdienu laikmetā ikviens, kam ir labs dators, var to atšifrēt mazāk nekā dienā. Es izmantoju 32 MB atmiņu