Satura rādītājs:

Arduino HMI, izmantojot valsts mašīnas: 9 soļi
Arduino HMI, izmantojot valsts mašīnas: 9 soļi

Video: Arduino HMI, izmantojot valsts mašīnas: 9 soļi

Video: Arduino HMI, izmantojot valsts mašīnas: 9 soļi
Video: #14 OP320 HMI Связь Modbus | Внешний ПЛК Arduino 2024, Novembris
Anonim
Arduino HMI, izmantojot valsts mašīnas
Arduino HMI, izmantojot valsts mašīnas

Š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

Image
Image

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

HMI kontrole
HMI kontrole

Lietojumprogrammai jāspēj veikt trīs lietas.

  1. Šeit es vēlos izmantot pogas, lai pārvietotos starp pieciem stāvokļiem: augšā, vidū, apakšā, pa kreisi un pa labi
  2. 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
  3. 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

Rīkoties ar valstīm
Rīkoties 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
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

Skaitītājs
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: