Sadržaj:
- Supplies
- Korak 1: Hardver
- Korak 2: Definirajte kako bi to trebalo funkcionirati
- Korak 3: Povezivanje državne mašine
- Korak 4: HMI kontrola
- Korak 5: Rukovanje državama
- Korak 6: Štoperica
- Korak 7: Brojač
- Korak 8: Simulacija
- Korak 9: Uzmite primjer
Video: Arduino HMI pomoću državnih mašina: 9 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
U ovom Instructable -u pokazat ću vam kako koristiti YAKINDU alate za dijagrame stanja za ostvarivanje jednostavnog i proširivog HMI -a pomoću štitnika LCD tipkovnice 16x2 za Arduino.
Mašine konačnih stanja (FSM) moćni su uzorci dizajna za razvoj složenih interfejsa ljudskih mašina (HMI). Kako se funkcionalnost HMI -a može povećati, korisno je koristiti dizajnerske uzorke poput državnih strojeva.
Kompletan primjer ugrađen je u YAKINDU alatke dijagrama stanja. Dodatno, Eclipse C ++ IDE za Arduino dodatak korišten je za kompajliranje i fleširanje u IDE -u.
Kratak sinopsis YAKINDU alata za grafikone stanja
Pomoću ovog alata moguće je kreirati grafičke strojeve stanja. Omogućava korisniku generiranje C, C ++ ili Java koda s državne mašine. Ovim pristupom model se može promijeniti ili proširiti, a korisnik može jednostavno ponovno generirati kod i ne mora pisati običan izvorni kod.
Supplies
Dijelovi:
- Arduino (Uno, Mega)
- USB kabel
- 16x2 LCD štitnik za tastaturu
Alati:
- YAKINDU Alati dijagrama stanja
- Eclipse C ++ IDE za Arduino
Korak 1: Hardver
Štitnik LCD tipkovnice može se jednostavno priključiti na Arduino. Ima 16x2 LCD ekran i dodatno ima šest tastera:
- Lijevo
- Tačno
- Gore
- Dolje
- Odaberite
- (Resetovati)
Očigledno je da se njih pet može koristiti. Tipke su spojene na razdjelnik napona i otkrivaju se pomoću Pin A0 ovisno o naponu. Koristio sam softversko uklanjanje da ih ispravno otkrijem.
Korak 2: Definirajte kako bi to trebalo funkcionirati
Aplikacija bi trebala biti sposobna raditi tri stvari.
- Rukovanje stanjima Ovdje želim koristiti gumbe za kretanje između pet stanja: Gore, Srednje, Dolje, Lijevo i Desno
- Štoperica Jednostavna štoperica koja se može pokrenuti, zaustaviti i resetirati. Treba ga povećavati svakih 100 milisekundi
- Brojač Treći dio sadrži jednostavan brojač gore/dolje. Trebao bi moći brojati pozitivne brojeve i trebao bi se resetirati
Aktivni izbornik (ili stanje) bit će prikazan na LCD ekranu 16x2 u gornjoj liniji. Aplikacija (država, mjerač vremena ili brojač) bit će prikazana u donjem redu. Za navigaciju treba koristiti lijevo i desno dugme.
Korak 3: Povezivanje državne mašine
Dugmad će biti oslobođena i povezana sa državnom mašinom. Mogu se koristiti kao u događajima u državnoj mašini. Dodatno, definisane su operacije za prikaz trenutnog menija. Definirane su najmanje dvije varijable, jedna za mjerač vremena i jedna za brojač.
interfejs:
// tipke kao ulazni događaji u desnom desnom u događaju lijevom u slučaju gore u događaju dolje u odabiru događaja // prikaz HMI specifične vrijednosti operacija displayLCDString (vrijednost: niz, dužina: cijeli broj, pozicija: cijeli broj) operacija displayLCDInteger (vrijednost: cijeli broj, položaj: integer) operacija clearLCDRow (position: integer) internal: // varijable za pohranu var cnt: integer var timeCnt: integer = 0
Nakon generiranja C ++ koda, in -događaji se moraju otkloniti i spojiti na sučelje. Ovaj isječak koda pokazuje kako to učiniti.
Prvo će se definirati gumbi:
#define NONE 0 #define SELECT 1 #define LEFT 2 #define DOWN 3 #define UP 4 #define RIGHT 5
Zatim postoji funkcija definirana za čitanje gumba. Vrijednosti se mogu razlikovati, ovisno o proizvođaču LCD ekrana.
static int readButton () {int rezultat = 0; rezultat = analogRead (0); if (rezultat <50) {return RIGHT; } if (rezultat <150) {return UP; } if (rezultat <300) {return DOWN; } if (rezultat <550) {return LEFT; } if (rezultat <850) {return SELECT; } return NONE; }
Na kraju će se dugmad otkloniti. Napravio sam dobre rezultate sa 80 ms. Kada se dugme otpusti, u slučaju će se podići.
int oldState = NONE; static void raiseEvents () {int buttonPressed = readButton (); kašnjenje (80); oldState = buttonPressed; if (oldState! = NONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> raise_select (); break; } slučaj LIJEVO: {stateMachine-> raise_left (); break; } slučaj DOLE: {stateMachine-> raise_down (); break; } slučaj UP: {stateMachine-> raise_up (); break; } slučaj DESNO: {stateMachine-> raise_right (); break; } default: {break; }}}}
Korak 4: HMI kontrola
Svako stanje se koristi za jedan dio menija. Postoje poddržava u kojima će se aplikacija - na primjer štoperica - izvršavati.
Sa ovim dizajnom, sučelje se može lako proširiti. Dodatni meniji mogu se jednostavno dodati upotrebom istog uzorka dizajna. Očitavanje vrijednosti senzora i prikazivanje u četvrtoj stavci menija nije velika stvar.
Za sada se samo kontrola koristi lijevo i desno. No gore i dolje također se može koristiti kao navigacijsko proširenje u glavnom izborniku. Samo dugme za odabir će se koristiti za unos određene stavke menija.
Korak 5: Rukovanje državama
Meni stanja ručke koristi se samo kao daljnji primjer navigacije. Korištenje gore, dolje, desno ili lijevo omogućuje prebacivanje između stanja. Trenutno stanje će uvijek biti ispisano u drugom retku na LCD ekranu.
Korak 6: Štoperica
Štoperica je vrlo jednostavna. U početku će se vrijednost timera resetirati. Tajmer se može pokrenuti korištenjem lijevog dugmeta i prebacivati pomoću lijeve i desne strane. Korištenje gore ili dolje poništava tajmer. Tajmer se također može vratiti na nulu pomoću dvaput tipke za odabir - napuštanjem izbornika i ponovnim unosom u njega, jer će se mjerač vremena postaviti na nulu početnim unosom štoperice.
Korak 7: Brojač
Barem je implementiran brojač. Unošenjem brojača stanje se resetuje. Može se pokrenuti bilo kojim tasterom, osim dugmeta za odabir. Implementirano je kao jednostavan brojač gore/dolje, čija vrijednost ne može biti manja od 0.
Korak 8: Simulacija
Korak 9: Uzmite primjer
IDE možete preuzeti ovdje: YAKINDU Alati grafikona stanja
Nakon što preuzmete IDE, primjer ćete pronaći putem Datoteka -> Novi -> Primjer
Besplatno je za ljubitelje, ali možete koristiti i probni period od 30 dana.
Preporučuje se:
Uradi sam -- Kako napraviti Spider robota kojim se može upravljati pomoću pametnog telefona pomoću Arduino Uno: 6 koraka
Uradi sam || Kako napraviti Spider robota koji se može kontrolirati pomoću pametnog telefona pomoću Arduino Uno: Prilikom izrade Spider robota možete naučiti toliko stvari o robotici. Kao što je izrada robota zabavna, ali i izazovna. U ovom videu pokazat ćemo vam kako napraviti Spider robota, kojim možemo upravljati pomoću našeg pametnog telefona (Androi
Snimite i pošaljite slike pomoću ESP32-Cam pomoću ESP8266 WeMos D1 R1 Wifi procesora sa Uno: 7 koraka
Snimite i pošaljite slike pomoću ESP32-Cam pomoću ESP8266 WeMos D1 R1 Wifi procesora sa Uno: Snimite sliku pomoću ESP32-Cam (OV2640) pomoću ESP8266 WeMos D1 R1 WiFI procesora sa Uno-om i pošaljite ga na e-poštu, sačuvajte na Google disku i pošaljite na Whatsapp koristi Twilio.Zahtjevi: ESP8266 WeMos D1 R1 WiFI procesor sa Uno (https: // protosupplies
Pravljenje sata pomoću M5stick C pomoću Arduino IDE - RTC sat u realnom vremenu sa M5stack M5stick-C: 4 koraka
Pravljenje sata pomoću M5stick C pomoću Arduino IDE | RTC sat u realnom vremenu sa M5stack M5stick-C: Zdravo momci, u ovim uputstvima naučit ćemo kako napraviti sat sa m5stick-C razvojnom pločom m5stack koristeći Arduino IDE. Dakle, m5stick će prikazati datum, vrijeme i amp; sedmica u mjesecu na ekranu
Domino građevinska mašina pomoću Witbloxa: 5 koraka
Domino građevinska mašina koristeći Witblox: Pozdrav svima. Napravio sam Domino građevinsku mašinu koristeći WITBLOX komplet. To je automobil na dva kotača s horizontalnim utovarivačem. Blokovi koje pruža WITBLOX kit omogućuju jednostavno povezivanje i jednostavni su za upotrebu. Ovaj blog opisuje korak po korak mak
Prediktivno održavanje rotirajućih mašina pomoću vibracije i govora stvari: 8 koraka
Prediktivno održavanje rotirajućih mašina pomoću vibracija i govora stvari: Rotirajuće mašine poput vjetroturbina, hidro turbina, asinhronih motora itd. Suočavaju se s različitim vrstama habanja. Većina ovih grešaka i trošenja uzrokovanih abnormalnim vibracijama u uređaju. Ove mašine često rade pod teškim