Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Hardware
- Trin 2: Definer, hvordan det skal fungere
- Trin 3: Grænseflade til statsmaskinen
- Trin 4: HMI -kontrol
- Trin 5: Håndter stater
- Trin 6: Stopur
- Trin 7: Tæller
- Trin 8: Simulering
- Trin 9: Få eksemplet
Video: Arduino HMI ved hjælp af statsmaskiner: 9 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
I denne Instructable vil jeg vise dig, hvordan du bruger YAKINDU Statechart Tools til at realisere et enkelt og udvideligt HMI ved hjælp af et 16x2 LCD -tastaturskærm til Arduino.
Finite State Machines (FSM) er et kraftfuldt designmønster til udvikling af komplekse Human Machine Interfaces (HMI). Da funktionaliteten af et HMI kan stige, er det nyttigt at bruge et designmønster som statsmaskiner.
Det komplette eksempel er integreret i YAKINDU Statechart Tools. Derudover er Eclipse C ++ IDE til Arduino Plugin blevet brugt til at kompilere og blinke i IDE.
En kort oversigt over YAKINDU Statechart Tools
Med dette værktøj er det muligt at oprette grafiske tilstandsmaskiner. Det giver brugeren mulighed for at generere C, C ++ eller Java -kode fra statsmaskinen. Med denne tilgang kan modellen ændres eller udvides, og brugeren kan simpelthen generere koden igen og behøver ikke skrive almindelig kildekode.
Forbrugsvarer
Dele:
- Arduino (Uno, Mega)
- USB -kabel
- 16x2 LCD -tastaturskærm
Værktøjer:
- YAKINDU Statechart -værktøjer
- Eclipse C ++ IDE til Arduino
Trin 1: Hardware
LCD -tastaturskærmen kan simpelthen tilsluttes Arduino. Det har en 16x2 LCD -skærm og har desuden seks trykknapper:
- Venstre
- Ret
- Op
- ned
- Vælg
- (Nulstil)
Det er klart, at fem af dem kan bruges. Nøglerne er forbundet til en spændingsdeler og detekteres ved hjælp af Pin A0 afhængigt af spændingen. Jeg har brugt software debouncing til at opdage dem korrekt.
Trin 2: Definer, hvordan det skal fungere
Ansøgningen skal være i stand til at gøre tre ting.
- Håndter stater Her vil jeg bruge knapperne til at navigere mellem fem tilstande: Top, midten, bunden, venstre og højre
- Stopur Et simpelt stopur, som kan startes, stoppes og nulstilles. Det bør øges hvert 100 millisekund
- Tæller Den tredje del indeholder en enkel op/ned -tæller. Det skal kunne tælle positive tal, og det skal kunne nulstilles
Den aktive menu (eller tilstanden) vises på 16x2 LCD på den øverste linje. Applikationen (tilstand, timer eller tæller) vises på bundlinjen. Til navigation skal venstre og højre trykknap bruges.
Trin 3: Grænseflade til statsmaskinen
Knapperne frakobles og forbindes til statsmaskinen. De kan bruges som ved begivenheder i statsmaskinen. Derudover er funktioner defineret til at vise den aktuelle menu. Og mindst to variabler, en for timeren og en for tælleren, er defineret.
interface:
// knapper som inputhændelser i hændelse højre i hændelse venstre i hændelse op i hændelse ned i hændelse vælg // vis HMI -specifikke værdier operation displayLCDString (værdi: streng, længde: heltal, position: heltal) betjeningsdisplayLCDInteger (værdi: heltal, position: heltal) operation clearLCDRow (position: heltal) intern: // variabler til lagring var cnt: heltal var timeCnt: heltal = 0
Efter generering af C ++ - koden skal in -events hæmmes og forbindes til grænsefladen. Dette kodestykke viser, hvordan du gør dette.
I første omgang vil knapperne blive defineret:
#definer INGEN 0 #definer VÆLG 1 #definer VENSTRE 2 #definer NED 3 #definer UP 4 #definer HØJRE 5
Så er der en funktion defineret til at læse knappen. Værdierne kan variere afhængigt af producenten af LCD -skærmen.
static int readButton () {int resultat = 0; resultat = analogRead (0); hvis (resultat <50) {return HØJRE; } hvis (resultat <150) {return UP; } hvis (resultat <300) {return DOWN; } hvis (resultat <550) {return LEFT; } hvis (resultat <850) {return SELECT; } returner INGEN; }
I slutningen fjernes knapperne. Jeg gjorde gode resultater med 80 ms. Når der først er frigivet en knap, vil den i givet fald hæve den.
int oldState = NONE; static void raiseEvents () {int buttonPressed = readButton (); forsinkelse (80); oldState = buttonPressed; if (oldState! = NONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> raise_select (); pause; } case LEFT: {stateMachine-> raise_left (); pause; } sag NED: {stateMachine-> raise_down (); pause; } case UP: {stateMachine-> raise_up (); pause; } sag HØJRE: {stateMachine-> raise_right (); pause; } standard: {pause; }}}}
Trin 4: HMI -kontrol
Hver tilstand bruges til en del af menuen. Der er delstater, hvor applikationen - f.eks. Stopuret - vil blive eksekveret.
Med dette design kan grænsefladen let udvides. Yderligere menuer kan ganske enkelt tilføjes ved hjælp af det samme designmønster. At læse en værdi af en sensor og vise den i et fjerde menupunkt er ikke noget problem.
I øjeblikket bruges kun venstre og højre som kontrol. Men op og ned kan også bruges som en navigationsudvidelse i hovedmenuen. Kun vælg -knappen bruges til at indtaste et bestemt menupunkt.
Trin 5: Håndter stater
Håndtagstilstandsmenuen bruges kun som et yderligere eksempel på navigation. Brug af op, ned, højre eller venstre giver mulighed for at skifte mellem staterne. Den aktuelle tilstand udskrives altid på den anden linje på LCD -displayet.
Trin 6: Stopur
Stopuret er ret simpelt. I første omgang nulstilles timerværdien. Timeren kan startes ved at bruge venstre knap og skifte med venstre og højre. Brug af op eller ned nulstiller timeren. Timeren kan også sættes tilbage til nul ved at bruge valgknappen to gange - forlade menuen og gå ind i den igen, da timeren vil blive indstillet til nul ved først at indtaste stopuret.
Trin 7: Tæller
I det mindste er der implementeret en tæller. Indtastning af tællertilstanden nulstiller tælleren. Det kan startes med en hvilken som helst trykknap, undtagen valgknappen. Det er implementeret som en enkel op/ned -tæller, hvis værdi ikke må være mindre end 0.
Trin 8: Simulering
Trin 9: Få eksemplet
Du kan downloade IDE'en her: YAKINDU Statechart Tools
Når du har downloadet IDE'en, finder du eksemplet via File -> N ew -> Eksempel
Det er gratis at bruge for hobbyfolk, men du kan også bruge en 30 dages prøveperiode.
Anbefalede:
DIY -- Sådan laver du en edderkoprobot, der kan kontrolleres ved hjælp af smartphone ved hjælp af Arduino Uno: 6 trin
DIY || Sådan laver du en edderkoprobot, der kan styres ved hjælp af smartphone Brug af Arduino Uno: Mens du laver en edderkoprobot, kan man lære så mange ting om robotik. Ligesom at lave robotter er underholdende såvel som udfordrende. I denne video vil vi vise dig, hvordan du laver en Spider -robot, som vi kan betjene ved hjælp af vores smartphone (Androi
Kontrol ledt over hele verden ved hjælp af internet ved hjælp af Arduino: 4 trin
Kontrol ledt over hele verden ved hjælp af internet ved hjælp af Arduino: Hej, jeg er Rithik. Vi kommer til at lave en internetstyret LED ved hjælp af din telefon. Vi kommer til at bruge software som Arduino IDE og Blynk.Det er enkelt, og hvis det lykkedes dig, kan du styre så mange elektroniske komponenter, du ønskerTing We Need: Hardware:
Sådan laver du en drone ved hjælp af Arduino UNO - Lav en quadcopter ved hjælp af mikrokontroller: 8 trin (med billeder)
Sådan laver du en drone ved hjælp af Arduino UNO | Lav en Quadcopter ved hjælp af mikrokontroller: Introduktion Besøg min Youtube -kanal En Drone er en meget dyr gadget (produkt) at købe. I dette indlæg vil jeg diskutere, hvordan jeg gør det billigt ?? Og hvordan kan du lave din egen sådan til en billig pris … Nå i Indien alle materialer (motorer, ESC'er
RF 433MHZ radiostyring ved hjælp af HT12D HT12E - Lav en RF -fjernbetjening ved hjælp af HT12E & HT12D med 433mhz: 5 trin
RF 433MHZ radiostyring ved hjælp af HT12D HT12E | Oprettelse af en RF -fjernbetjening ved hjælp af HT12E & HT12D med 433mhz: I denne instruktør vil jeg vise dig, hvordan du laver en RADIO -fjernbetjening ved hjælp af 433mhz sendermodtagermodul med HT12E -kode & HT12D -dekoder IC.I denne instruktive kan du sende og modtage data ved hjælp af meget meget billige KOMPONENTER SOM: HT
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter - Rc Helikopter - Rc -fly ved hjælp af Arduino: 5 trin (med billeder)
Trådløs fjernbetjening ved hjælp af 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sender modtager til Quadcopter | Rc Helikopter | Rc -fly ved hjælp af Arduino: At betjene en Rc -bil | Quadcopter | Drone | RC -fly | RC -båd, vi har altid brug for en modtager og sender, antag at vi til RC QUADCOPTER har brug for en 6 -kanals sender og modtager, og den type TX og RX er for dyr, så vi laver en på vores