Innholdsfortegnelse:
- Trinn 1: Få alle delene
- Trinn 2: Nokia 5110 LCD -skjerm
- Trinn 3: Rotary Encoder
- Trinn 4: Bygg prosjektet
- Trinn 5: Koden til prosjektet
- Trinn 6: Testing av prosjektet
Video: Arduino -meny på en Nokia 5110 Lcd ved hjelp av en roterende encoder: 6 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
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
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
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
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
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
I dette prosjektet bruker vi 4 biblioteker. Vi bruker to biblioteker for visningen, og to for den roterende koderen.
- Adafruit GFX:
- Nokia 5110:
- Koderbibliotek:
- 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
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:
DIY -- Hvordan lage en edderkopprobot som kan kontrolleres ved hjelp av smarttelefon ved hjelp av Arduino Uno: 6 trinn
DIY || Hvordan lage en edderkopprobot som kan kontrolleres ved hjelp av smarttelefon ved hjelp av Arduino Uno: Mens du lager en edderkopprobot, kan du lære så mange ting om robotikk. Som å lage roboter er både underholdende og utfordrende. I denne videoen skal vi vise deg hvordan du lager en Spider -robot, som vi kan bruke ved hjelp av smarttelefonen vår (Androi
Roterende vifte ved hjelp av servomotor og hastighetskontroll: 6 trinn
Roterende vifte ved hjelp av servomotor og hastighetskontroll: I denne opplæringen lærer vi hvordan du roterer en vifte med justerbar hastighet ved hjelp av servomotor, potensiometer, arduino og Visuino. Se videoen
Bruk en trinnmotor som en roterende encoder: 9 trinn (med bilder)
Bruk en trinnmotor som en roterende encoder: Rotary encoders er gode for bruk i mikrokontrollerprosjekter som en inngangsenhet, men ytelsen er ikke veldig jevn og tilfredsstillende. Da jeg hadde mange ekstra steppermotorer rundt, bestemte jeg meg for å gi dem et formål. Så hvis du har noen stepper
Hvordan lage en drone ved hjelp av Arduino UNO - Lag en quadcopter ved hjelp av mikrokontroller: 8 trinn (med bilder)
Hvordan lage en drone ved hjelp av Arduino UNO | Lag en Quadcopter ved hjelp av mikrokontroller: Introduksjon Besøk min Youtube -kanal En Drone er en veldig dyr gadget (produkt) å kjøpe. I dette innlegget skal jeg diskutere hvordan jeg får det billig? Og hvordan kan du lage din egen slik til en billig pris … Vel, i India er alle materialer (motorer, ESCer
Predisitiv vedlikehold av roterende maskiner ved hjelp av en vibrasjon og Thingspeak: 8 trinn
Predisitiv vedlikehold av roterende maskiner ved bruk av en vibrasjon og Thingspeak: Roterende maskiner som vindturbiner, hydroturbiner, induksjonsmotorer osv. Står overfor forskjellige typer slitasje og slitasje. De fleste av disse feilene og slitasje forårsaket av unormale vibrasjoner i enheten. Disse maskinene brukes ofte under tunge