Taula de continguts:
- Subministraments
- Pas 1: el maquinari
- Pas 2: definiu com hauria de funcionar
- Pas 3: Interfície de la màquina estatal
- Pas 4: control HMI
- Pas 5: gestionar els estats
- Pas 6: cronòmetre
- Pas 7: comptador
- Pas 8: simulació
- Pas 9: obteniu l'exemple
Vídeo: Arduino HMI amb màquines estatals: 9 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
En aquest instructiu, us mostraré com utilitzar les eines de diagrama d’estats de YAKINDU per realitzar una HMI senzilla i ampliable mitjançant un escut del teclat LCD de 16x2 per a Arduino.
Les màquines d'estat finit (FSM) són un patró de disseny potent per desenvolupar interfícies complexes màquina humana (HMI). Com que la funcionalitat d'un HMI pot augmentar, és útil utilitzar un patró de disseny com les màquines d'estat.
L'exemple complet està incrustat a YAKINDU Statechart Tools. A més, s'ha utilitzat l'IDE Eclipse C ++ per al connector Arduino per compilar i intermitir a l'IDE.
Una breu sinopsi de les eines YAKINDU Statechart
Amb aquesta eina és possible crear màquines d’estats gràfics. Permet a l'usuari generar codi C, C ++ o Java des de la màquina d'estats. Amb aquest enfocament, el model es pot canviar o ampliar i l'usuari simplement pot tornar a generar el codi i no ha d'escriure codi font normal.
Subministraments
Parts:
- Arduino (Uno, Mega)
- Cable USB
- Escut del teclat LCD de 16x2
Eines:
- Eines de gràfics d'estat de YAKINDU
- IDE Eclipse C ++ per a Arduino
Pas 1: el maquinari
L'escut del teclat LCD es pot connectar simplement a l'Arduino. Té una pantalla LCD de 16x2 i té, a més, sis botons:
- Esquerra
- Dret
- Amunt
- A baix
- Seleccioneu
- (Restableix)
Viouslybviament, se’n poden fer servir cinc. Les claus es connecten a un divisor de tensió i es detecten mitjançant el pin A0 en funció de la tensió. He utilitzat la descàrrega de programari per detectar-los correctament.
Pas 2: definiu com hauria de funcionar
L'aplicació hauria de ser capaç de fer tres coses.
- Tractar Estats Aquí vull utilitzar els botons per navegar entre cinc estats: superior, mig, inferior, esquerra i dreta
- Cronòmetre Un cronòmetre senzill, que es pot iniciar, aturar i restablir. S'hauria d'incrementar cada 100 mil·lisegons
- La tercera part conté un senzill comptador amunt / avall. Ha de ser capaç de comptar nombres positius i ha de ser restablible
El menú actiu (o l’estat) es mostrarà a la pantalla LCD de 16x2 de la línia superior. L'aplicació (Estat, temporitzador o comptador) es mostrarà a la línia inferior. Per a la navegació, s’ha d’utilitzar el polsador esquerre i dret.
Pas 3: Interfície de la màquina estatal
Els botons seran rebutjats i connectats a la màquina d’estat. Es poden utilitzar com en esdeveniments a la màquina d'estats. A més, es defineixen les operacions per mostrar el menú actual. I es defineixen almenys dues variables, una per al temporitzador i una per al comptador.
interfície:
// botons com a esdeveniments d’entrada a l’esdeveniment dret a l’esquerra a l’esdeveniment cap amunt en cas que es baixi en cas que es seleccioni // visualitzar els valors específics de l’HMI operació visualització LCDString (valor: cadena, longitud: enter, posició: enter) visualització d’operació LCD Enter (valor: enter, posició: enter) operació clearLCDRow (posició: enter) internal: // variables for storage var cnt: inte var var timeCnt: integer = 0
Després de generar el codi C ++, els esdeveniments in han de ser rebutjats i connectats a la interfície. Aquest fragment de codi mostra com fer-ho.
Al principi, es definiran els botons:
#define NONE 0 # define SELECT 1 #define LEFT 2 #define DOWN 3 #define UP 4 #define RIGHT 5
Després hi ha una funció definida per llegir el botó. Els valors poden variar, segons el fabricant de l’escut LCD.
static int readButton () {int result = 0; resultat = analogRead (0); if (resultat <50) {tornar DRET; } if (resultat <150) {return UP; } if (resultat <300) {tornar cap avall; } if (resultat <550) {tornar ESQUERRA; } if (resultat <850) {return SELECT; } tornar cap; }
Al final, es rebutjaran els botons. Vaig obtenir bons resultats amb 80 ms. Una vegada que es deixi anar un botó, augmentarà el que correspongui en cas que sigui.
int oldState = NONE; static void raiseEvents () {int buttonPressed = readButton (); retard (80); oldState = botóPrimit; if (oldState! = NONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> raise_select (); trencar; } cas ESQUERRA: {stateMachine-> raise_left (); trencar; } cas ABAIX: {stateMachine-> raise_down (); trencar; } majúscules i minúscules: {stateMachine-> raise_up (); trencar; } cas DRET: {stateMachine-> raise_right (); trencar; } per defecte: {break; }}}}
Pas 4: control HMI
Cada estat s'utilitza per a una part del menú. Hi ha subestats, on s’executarà l’aplicació (per exemple, el cronòmetre).
Amb aquest disseny, la interfície es pot ampliar fàcilment. Es poden afegir menús addicionals amb el mateix patró de disseny. Llegir un valor d’un sensor i mostrar-lo en un quart element de menú no és un gran problema.
De moment, només s'utilitzen l'esquerra i la dreta com a control. Però amunt i avall també es pot utilitzar com a extensió de navegació al menú principal. Només s’utilitzarà el botó de selecció per introduir un element de menú específic.
Pas 5: gestionar els estats
El menú d'estats de controlador només s'utilitza com un exemple més de navegació. L'ús amunt, avall, dret o esquerre permet canviar entre estats. L'estat actual sempre s'imprimirà a la segona línia de la pantalla LCD.
Pas 6: cronòmetre
El cronòmetre és bastant senzill. Inicialment, es restablirà el valor del temporitzador. El temporitzador es pot iniciar amb el botó esquerre i alternar amb l’esquerra i la dreta. Si feu servir cap amunt o cap avall es restableix el temporitzador. El temporitzador també es pot tornar a zero fent servir el botó de selecció dues vegades: sortint del menú i tornant a entrar-hi, ja que el temporitzador es posarà a zero entrant inicialment al cronòmetre.
Pas 7: comptador
Si més no, hi ha un comptador implementat. En entrar a l’estat del comptador, es reinicia el comptador. Es pot iniciar mitjançant qualsevol polsador, excepte el botó de selecció. S'implementa com un simple comptador amunt / avall, el valor del qual no pot ser inferior a 0.
Pas 8: simulació
Pas 9: obteniu l'exemple
Podeu descarregar l’IDE aquí: Eines d’estadístiques de YAKINDU
Un cop heu descarregat l'IDE, trobareu l'exemple a Fitxer -> Nou -> Exemple
És gratuït per als aficionats, però també podeu fer una prova de 30 dies.
Recomanat:
SIMULACIÓ DE MÀQUINES DE DESINFECCIÓ AMB TINKERCAD: 6 passos
SIMULACIÓ DE MÀQUINES DE DESINFECCIÓ AMB TINKERCAD: En aquest inescrutable anem a veure com es fa una simulació de Màquina de desinfecció, Contact less Automatic Sanitizer és una màquina de desinfecció perquè no farem servir les mans per fer funcionar la màquina, en comptes del sensor d'infrarojos de proximitat
GUIA DE MÀQUINES VENDEDES MODERNES AMB RASPBERRY PI AMB DJANGO: 4 passos
GUI MÀQUINA VENDEDORA MODERNA AMB RASPBERRY PI AMB DJANGO: Podem fer una interfície gràfica d’usuari moderna utilitzant llenguatges web per a la màquina expenedora? La resposta anterior és que sí. Podem utilitzar-les per a màquines expenedores amb mode de quiosc. La següent idea ja la vaig aplicar al meu projecte existent i funciona bé i provem
Rastrejador de màquines de cafè amb Raspberry Pi i Fulls de càlcul de Google: 5 passos
Rastrejador de màquines de cafè amb Raspberry Pi i Fulls de càlcul de Google: aquest instructiu us mostrarà com construir un rastrejador basat en Raspberry Pi per a la màquina de cafè compartida a la vostra oficina. Mitjançant la pantalla OLED del monitor i els interruptors mecànics, els usuaris poden registrar el consum de cafè, veure el seu saldo i
Manteniment predictiu de màquines giratòries amb vibracions i Thingspeak: 8 passos
Manteniment predictiu de màquines giratòries mitjançant vibracions i coses: les màquines giratòries com les turbines eòliques, les turbines hidràuliques, els motors d’inducció, etc. s’enfronten a diferents tipus de desgast i desgarrament. La majoria d’aquestes falles i desgast causades per les vibracions anormals del dispositiu. Aquestes màquines s'utilitzen sovint sota heavy-du
Màquines de moviment: 10 passos (amb imatges)
Màquines de moviment: les màquines de moviment proporcionen una introducció lúdica al moviment, el mecanisme i la robòtica. Els kits estan formats per un cos de fusta contraxapada de tallat de laser i peces simples a granel com motors d'engranatges de moviment lent, bateries de plàstic i interruptors corredissos. Els estudiants poden experimentar amb