Innholdsfortegnelse:

Arduino -meny på en Nokia 5110 Lcd ved hjelp av en roterende encoder: 6 trinn (med bilder)
Arduino -meny på en Nokia 5110 Lcd ved hjelp av en roterende encoder: 6 trinn (med bilder)

Video: Arduino -meny på en Nokia 5110 Lcd ved hjelp av en roterende encoder: 6 trinn (med bilder)

Video: Arduino -meny på en Nokia 5110 Lcd ved hjelp av en roterende encoder: 6 trinn (med bilder)
Video: как сделать мини осциллограф, альтиум дизайнер 2024, Juli
Anonim
Image
Image
Arduino -meny på en Nokia 5110 Lcd ved hjelp av en roterende koder
Arduino -meny på en Nokia 5110 Lcd ved hjelp av en roterende koder

Kjære venner, velkommen til en annen opplæring! I denne videoen skal vi lære å bygge vår egen meny for den populære Nokia 5110 LCD -skjermen, for å gjøre prosjektene våre mer brukervennlige og mer dyktige. La oss komme i gang!

Dette er prosjektet vi skal bygge. I displayet vises en enkel meny, og ved hjelp av dreiekoderen kan jeg navigere opp eller ned og velge et menyelement ved å trykke på dreiekoderknappen. Når du trykker på den midtre knappen på den roterende encoderen, vises en annen skjerm, og vi kan endre verdien av en variabel. Hvis vi trykker på dreiekoderknappen en gang til, går vi tilbake til hovedmenyskjermen. Menyen har 6 elementer, og vi kan bla ned eller opp menyen, og elementene på displayet vil endre seg tilsvarende. Se den vedlagte videoen for å se nøyaktig hvordan denne menyen fungerer. Selvfølgelig kan du endre det for å bygge dine egne mer komplekse menyer hvis du ønsker det.

La oss nå se hvordan vi bygger dette prosjektet.

Trinn 1: Få alle delene

Få alle delene
Få alle delene

Delene som trengs for å bygge dette prosjektet er følgende:

  • En Arduino Uno ▶
  • En Nokia 5110 LCD -skjerm ▶
  • En Rotary Encoder ▶
  • Et lite brødbrett ▶
  • Noen ledninger ▶
  • Power Bank ▶

Kostnaden for prosjektet er veldig lav, det er mindre enn $ 10. Du finner lenker til alle delene jeg bruker i beskrivelsen av videoen nedenfor.

Trinn 2: Nokia 5110 LCD -skjerm

Image
Image
Bygg prosjektet
Bygg prosjektet

Nokia 5110 er min favorittskjerm for mine Arduino -prosjekter.

Nokia 5110 er en grunnleggende grafisk LCD -skjerm som opprinnelig var ment som en mobiltelefonskjerm. Den bruker PCD8544 -kontrolleren, som er en CMOS LCD -kontroller/driver med lav effekt. På grunn av dette har denne skjermen et imponerende strømforbruk. Den bruker bare 0,4 mA når den er på, men bakgrunnsbelysningen er deaktivert. Den bruker mindre enn 0,06mA i hvilemodus! Det er en av grunnene til at denne skjermen er min favoritt. PCD8544 grensesnitt til mikrokontrollere gjennom et serielt bussgrensesnitt. Det gjør skjermen veldig enkel å bruke med Arduino. Du trenger bare å koble til 8 ledninger.

Jeg har utarbeidet en detaljert opplæring om hvordan du bruker Nokia 5110 LCD -skjerm med Arduino. Jeg har lagt ved den videoen i denne instruksjonsboken, den kan gi nyttig informasjon om displayet, så jeg oppfordrer deg til å se den nøye. Kostnaden for displayet er rundt $ 4.

Du kan få det her: ▶

Trinn 3: Rotary Encoder

Image
Image

En roterende encoder, også kalt en akselkoder, er en elektromekanisk enhet som konverterer vinkelposisjonen eller bevegelsen til en aksel eller aksel til en analog eller digital kode. Rotary encoders brukes i mange applikasjoner som krever presis aksel ubegrenset rotasjon-inkludert industrielle kontroller, robotikk, fotografiske objektiver for spesielle formål, datamaskininnmatingsenheter (for eksempel optomekaniske mus og styrekuler), kontrollerte stress-reometere og roterende radarplattformer.

Den roterende encoderen vi skal bruke i dette prosjektet er en veldig billig encoder. Den har også en innebygd knapp, og for å få den til å fungere trenger vi bare å koble til 5 ledninger. Jeg har utarbeidet en detaljert opplæring om hvordan du bruker en roterende encoder. Du finner denne videoen vedlagt her.

Kostnaden for denne roterende encoderen er veldig lav. Det koster rundt $ 1,5.

Du kan få det her ▶

Trinn 4: Bygg prosjektet

Image
Image
Bygg prosjektet
Bygg prosjektet
Bygg prosjektet
Bygg prosjektet

La oss nå koble alle delene sammen. Før du bygger dette prosjektet, hvis du ikke har brukt en roterende encoder tidligere, oppfordrer jeg deg til å se opplæringen jeg har utarbeidet om roterende encoders. Det vil hjelpe deg å forstå hvordan roterende kodere fungerer, og du kommer til å få litt erfaring med dem. Denne videoen er vedlagt her.

Jeg har plassert displayet på et lite brødbrett som dette. La oss først koble skjermen. Den første pinnen på displayet som er Reset går til digital pin 3 på Arduino Uno, den andre pin til digital pin 4, den tredje pin til digital pin 5, den fjerde pin til digital pin 11 og den femte pin til digital pin 13. Den neste pin er Vcc. Vi kobler Vcc til den positive skinnen på brødbrettet, og brødbrettets positive skinne til 3.3V -utgangen på Arduino. Den neste pinnen er bakgrunnsbelysning for skjermen. Siden vi ønsker å kontrollere den via programvaren, kobler vi den til digital pin 7. Den siste pin er GND. Vi kobler GND til den negative skinnen på brødbrettet, og den negative skinnen på brødbrettet til Arduino GND.

Alt vi trenger å gjøre er å koble til den roterende omkoderen. Den første pinnen er GND, og vi kobler den til den negative skinnen på brødbrettet. Den neste pinnen er Vcc, og vi kobler den til den positive skinnen på brødbrettet. Den neste pinnen er SW, og vi kobler den til Analog Pin 2. Den neste pinnen heter DT og vi kobler den til Analog Pin 1. Til slutt er pin CLK koblet til Analog Pin 0. Du finner skjematisk diagram av dette prosjektet i beskrivelsen av videoen nedenfor.

Nå er vi klare til å sette i gang prosjektet. Som du kan se, fungerer prosjektet bra, og menyen fungerer som forventet! Flott, la oss nå se programvaren til prosjektet.

Trinn 5: Koden til prosjektet

Koden for prosjektet
Koden for prosjektet

I dette prosjektet bruker vi 4 biblioteker. Vi bruker to biblioteker for visningen, og to for den roterende koderen.

  1. Adafruit GFX:
  2. Nokia 5110:
  3. Koderbibliotek:
  4. TimerOne -bibliotek:

Først skal vi ta en titt på drawMenu -funksjonen. Denne funksjonen er ansvarlig for å tegne menyen på displayet. Denne funksjonen kalles noen få millisekunder, så hvis det er en endring på menyen, er denne funksjonen ansvarlig for å oppdatere menyen på skjermen.

int menuitem = 1; int frame = 1; int side = 1; int lastMenuItem = 1;

Det er også 3 veldig viktige globale variabler, variabelsiden, variabelmenyen og variabel ramme. Den variable siden husker hvilken UI -skjerm som vises på skjermen. Så, hvis sidevariabelen er 1, befinner vi oss i hovedgrensesnittskjermen, og hvis variabelen er 2, befinner vi oss i den sekundære brukergrensesnittskjermen hvor vi setter verdien på en variabel. Menyelementet husker det valgte menyelementet. Så hvis verdien er 1, velges det første menyelementet, så drawMenu -funksjonen må tegne dette menyelementet som svart med hvite bokstaver. Hvis menyelementet er 2, velges det andre menyelementet og så videre. Rammevariabelen husker hvilken del av menyen som vises på skjermen. Siden menyen vi har opprettet inneholder 6 elementer og vi bare kan vise 3 av dem om gangen, må vi vite hvilke elementer som vises på skjermen. Rammevariabelen forteller oss akkurat dette. Hvis rammevariabelen har verdien 1, viser vi de tre første menyelementene, hvis den er 2, viser vi elementene 2, 3, 4 og så videre.

Jeg prøvde å gjøre koden så enkel som mulig å endre, så jeg har laget noen globale variabler som inneholder navnene på menyelementene. På denne måten kan du enkelt lage dine egne menyer uten å søke i kode.

String menuItem1 = "Kontrast"; String menuItem2 = "Volum"; String menuItem3 = "Språk"; String menuItem4 = "Vanskelighetsgrad"; String menuItem5 = "Lys: PÅ"; String menuItem6 = "Tilbakestill";

boolsk bakgrunnsbelysning = sant;

int kontrast = 60; int volum = 50;

String språk [3] = {"EN", "ES", "EL"};

int selectedLanguage = 0;

Strengproblem [2] = {"LETT", "HARD"};

int utvalgte vanskeligheter = 0;

Først initialiserer vi alle de globale variablene som er nødvendige i koden. Deretter initialiserer vi visningen. I loop -funksjonen kaller vi først drawMenu -funksjonen for å tegne menyen på skjermen. Deretter leser vi verdien fra Rotary encoder og sjekker om knappen er trykket. For eksempel, hvis vi er på hovedgrensesnittskjermbildet og det første menyelementet er valgt, hvis verdien fra dreiekoderen har økt, øker menuitemvariabelen, og i neste sløyfe vil drawMenu -funksjonen tegne det andre menyelementet som valgt. Hvis vi nå trykker på knappen på den roterende encoderen navigerer vi til den andre siden, hvor vi setter verdien av variabelen. Igjen ved å bruke den roterende koderen kan vi øke eller redusere verdien av variabelen. Hvis vi trykker på knappen, navigerer vi tilbake til hovedmenysiden, og sidevariabelen reduseres.

Det er den grunnleggende ideen bak denne menyen. Vi følger samme fremgangsmåte for alle menyelementene og sidene. Koden er kompleks, den er over 400 linjer lang. Det virker komplisert, men hvis du prøver det selv, kommer du til å forstå det lettere, og du vil kunne endre det, utvide det og bruke det i dine egne prosjekter. Som alltid kan du finne koden vedlagt her.

Trinn 6: Testing av prosjektet

Testing av prosjektet
Testing av prosjektet

Hvis vi laster inn koden, kan vi se at prosjektet fungerer som forventet. Vi kan navigere menyen opp og ned ved hjelp av akselen, og vi kan velge et hvilket som helst menyelement ved å trykke på den roterende encoder -knappen. Hvor kult er det!

Nå som vi vet hvordan vi bygger menyer for Nokia 5110 LCD -skjermer, kan vi legge til flere funksjoner i prosjektene våre og gjøre dem mer brukervennlige. Denne enkle menyen som vi bygde i dag kan imidlertid forbedres. Vi kan bruke avbrudd i stedet for å sjekke knappestatusene hele tiden. På denne måten kan vi redusere strømforbruket til prosjektet og gjøre koden renere. Jeg skal snart forberede en video om avbrudd, så følg med. Jeg vil gjerne høre din mening om dette menyprosjektet. Synes du det er nyttig, og har du tenkt å bruke en meny i noen av prosjektene dine. Vennligst legg inn dine tanker og ideer nedenfor, takk!

Anbefalt: