Arduinon käyttöliittymä valtion koneiden avulla: 9 vaihetta
Arduinon käyttöliittymä valtion koneiden avulla: 9 vaihetta
Anonim
Arduinon käyttöliittymä valtion koneiden avulla
Arduinon käyttöliittymä valtion koneiden avulla

Tässä Instructable -ohjelmassa näytän sinulle, kuinka voit käyttää YAKINDU Statechart Tools -työkalua yksinkertaisen ja laajennettavan käyttöliittymän luomiseen käyttämällä 16x2 LCD -näppäimistön suojaa Arduinolle.

Finite State Machines (FSM) on tehokas suunnittelumalli monimutkaisten ihmisen ja koneen rajapintojen (HMI) kehittämiseen. Koska käyttöliittymän toiminnallisuus voi lisääntyä, on hyödyllistä käyttää suunnittelumallia, kuten tilakoneita.

Koko esimerkki on upotettu YAKINDU Statechart Toolsiin. Lisäksi Eclipse C ++ IDE for Arduino -laajennusta on käytetty IDE: n kokoamiseen ja vilkkumiseen.

Lyhyt yhteenveto YAKINDU Statechart Toolsista

Tämän työkalun avulla on mahdollista luoda graafisia tilakoneita. Sen avulla käyttäjä voi luoda C-, C ++ - tai Java -koodin tilakoneelta. Tällä lähestymistavalla mallia voidaan muuttaa tai laajentaa ja käyttäjä voi yksinkertaisesti luoda koodin uudelleen eikä hänen tarvitse kirjoittaa pelkkää lähdekoodia.

Tarvikkeet

Osat:

  • Arduino (Uno, Mega)
  • USB kaapeli
  • 16x2 LCD -näppäimistön suojus

Työkalut:

  • YAKINDU Statechart Tools
  • Eclipse C ++ IDE Arduinolle

Vaihe 1: Laitteisto

Image
Image

LCD -näppäimistön suoja voidaan kytkeä Arduinoon. Siinä on 16x2 LCD -näyttö ja lisäksi kuusi painiketta:

  • Vasen
  • Aivan
  • Ylös
  • Alas
  • Valitse
  • (Palauta)

On selvää, että viisi niistä voidaan käyttää. Avaimet on kytketty jännitteenjakajaan ja ne tunnistetaan käyttämällä pin A0 jännitteestä riippuen. Olen havainnut ne oikein käyttämällä ohjelmiston purkamista.

Vaihe 2: Määritä, miten sen pitäisi toimia

HMI -ohjaus
HMI -ohjaus

Sovelluksen pitäisi pystyä tekemään kolme asiaa.

  1. Käsittele tiloja Tässä haluan käyttää painikkeita navigoidaksesi viiden tilan välillä: ylhäällä, keskellä, alhaalla, vasemmalla ja oikealla
  2. Sekuntikello Yksinkertainen sekuntikello, joka voidaan käynnistää, pysäyttää ja nollata. Sitä tulisi lisätä 100 millisekunnin välein
  3. Kolmas osa sisältää yksinkertaisen ylös/alas -laskurin. Sen pitäisi pystyä laskemaan positiiviset luvut ja sen pitäisi olla palautettavissa

Aktiivinen valikko (tai tila) näkyy ylärivin 16x2 LCD -näytössä. Sovellus (tila, ajastin tai laskuri) näkyy alarivillä. Navigointiin tulee käyttää vasenta ja oikeaa painiketta.

Vaihe 3: Liitäntä tilakoneeseen

Painikkeet poistetaan käytöstä ja kytketään tilakoneeseen. Niitä voidaan käyttää kuten tilakoneen tapahtumissa. Lisäksi toiminnot on määritetty näyttämään nykyinen valikko. Ja vähintään kaksi muuttujaa, yksi ajastimelle ja toinen laskurille, on määritelty.

käyttöliittymä:

// painikkeet syöttötapahtumina tapahtumassa oikealla tapahtumalla vasemmalla tapahtumalla ylöspäin tapahtumalla alaspäin tapahtuman valinnassa // näyttää HMI -erityiset arvot käyttönäyttöLCDString (arvo: merkkijono, pituus: kokonaisluku, sijainti: kokonaisluku) toimintonäyttöLCDInteger (arvo: kokonaisluku, sijainti: kokonaisluku) operaatio clearLCDRow (sijainti: kokonaisluku) internal: // tallennusmuuttujat var cnt: integer var timeCnt: integer = 0

C ++ -koodin luomisen jälkeen in -tapahtumat on purettava ja kytkettävä käyttöliittymään. Tämä koodinpätkä näyttää, miten tämä tehdään.

Aluksi painikkeet määritellään:

#define NONE 0 #define SELECT 1 #define LEFT 2 #define DOWN 3 #define UP 4 #define OIKEA 5

Sitten on määritetty toiminto painikkeen lukemiseksi. Arvot voivat vaihdella nestekidenäytön valmistajan mukaan.

staattinen int readButton () {int tulos = 0; tulos = analoginen (0); if (tulos <50) {return OIKEA; } if (tulos <150) {return UP; } if (tulos <300) {return DOWN; } if (tulos <550) {return VASEN; } if (tulos <850) {return SELECT; } palauta NONE; }

Lopuksi painikkeet poistetaan käytöstä. Tein hyviä tuloksia 80 ms: lla. Kun painike vapautetaan, se nostaa tilanteen mukaan.

int oldState = NONE; static void raiseEvents () {int buttonPressed = readButton (); viive (80); oldState = -painikePainettu; if (oldState! = NONE &&& readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> raise_select (); tauko; } tapaus VASEN: {stateMachine-> raise_left (); tauko; } tapaus ALAS: {stateMachine-> raise_down (); tauko; } tapaus YLÖS: {stateMachine-> raise_up (); tauko; } tapaus OIKEA: {stateMachine-> raise_right (); tauko; } oletus: {break; }}}}

Vaihe 4: HMI -ohjaus

Kutakin tilaa käytetään valikon osassa. On osavaltioita, joissa sovellus - esimerkiksi sekuntikello - suoritetaan.

Tällä suunnittelulla käyttöliittymää voidaan helposti laajentaa. Lisävalikkoja voidaan yksinkertaisesti lisätä käyttämällä samaa suunnittelumallia. Anturin arvon lukeminen ja sen näyttäminen neljännessä valikkokohdassa ei ole iso juttu.

Toistaiseksi vain vasenta ja oikeaa ohjainta käytetään. Mutta ylös ja alas voidaan käyttää myös päävalikon navigointilaajennuksena. Vain valintapainiketta käytetään syötettäessä tietty valikkokohta.

Vaihe 5: Käsittele tiloja

Käsittele osavaltioita
Käsittele osavaltioita

Kahvan tilat -valikkoa käytetään vain esimerkkinä navigoinnista. Ylös, alas, oikealle tai vasemmalle käyttämällä voit vaihtaa tilojen välillä. Nykyinen tila tulostetaan aina nestekidenäytön toiselle riville.

Vaihe 6: Sekuntikello

Sekuntikello
Sekuntikello

Sekuntikello on melko yksinkertainen. Aluksi ajastimen arvo nollataan. Ajastin voidaan käynnistää vasemmalla painikkeella ja vaihtaa vasemmalla ja oikealla. Ylös- tai alaskäyttö nollaa ajastimen. Ajastin voidaan myös nollata käyttämällä valintapainiketta kahdesti - poistumalla valikosta ja siirtymällä siihen uudelleen, koska ajastin nollataan syöttämällä ensin sekuntikello.

Vaihe 7: Laskuri

Laskuri
Laskuri

Ainakin laskuri on toteutettu. Laskurin tilaan siirtyminen nollaa laskurin. Se voidaan käynnistää millä tahansa painikkeella paitsi valintapainiketta. Se toteutetaan yksinkertaisena ylös/alas -laskurina, jonka arvo ei voi olla pienempi kuin 0.

Vaihe 8: Simulaatio

Vaihe 9: Hae esimerkki

Voit ladata IDE: n täältä: YAKINDU Statechart Tools

Kun olet ladannut IDE: n, löydät esimerkin kohdasta Tiedosto -> Uusi -> Esimerkki

Se on harrastajille ilmainen, mutta voit myös käyttää 30 päivän kokeilujaksoa.

Suositeltava: