Arduino Menu på en Nokia 5110 Lcd Brug af en Rotary Encoder: 6 trin (med billeder)

Arduino Menu på en Nokia 5110 Lcd Brug af en Rotary Encoder: 6 trin (med billeder)

Indholdsfortegnelse:

Anonim

Kære venner velkommen til en anden vejledning! I denne video skal vi lære at bygge vores menu for den populære Nokia 5110 LCD-skærm, for at gøre vores projekter mere brugervenlige og bedre. Lad os komme igang!

Dette er det projekt, vi skal bygge. I displayet vises en simpel menu, og ved hjælp af rotationsgiveren kan jeg navigere op eller ned og vælge et menupunkt ved at trykke på den roterende indkoderknap. Når den midterste knap på rotationsgiveren trykkes, vises en anden skærm, og vi kan ændre værdien af ​​en variabel. Hvis vi endnu en gang trykker på drejeknappen, går vi tilbage til hovedmenuskærmen. Menuen har 6 elementer, og vi kan rulle ned eller op i menuen, og elementerne på displayet ændres i overensstemmelse hermed. Se den vedhæftede video for at se præcis, hvordan denne menu fungerer. Selvfølgelig kan du ændre det til at opbygge dine egne mere komplekse menuer, hvis du ønsker det.

Lad os nu se, hvordan man bygger dette projekt.

forsyninger:

Trin 1: Få alle de dele

De nødvendige dele til opbygning af dette projekt er følgende:

  • En Arduino Uno ▶
  • En Nokia 5110 LCD-skærm ▶
  • En Rotary Encoder ▶
  • Et lille brødbræt ▶
  • Nogle ledninger ▶
  • Power Bank ▶

Omkostningerne til projektet er meget lave, det er mindre end $ 10. Du kan finde links til alle de dele, jeg bruger i beskrivelsen af ​​videoen nedenfor.

Trin 2: Nokia 5110 LCD-skærm

Nokia 5110 er min favorit skærm til mine Arduino projekter.

Nokia 5110 er en grundlæggende grafisk LCD-skærm, der oprindeligt var beregnet til som en mobiltelefon skærm. Den bruger PCD8544 controller som er en CMOS LCD-controller med lav effekt. På grund af dette har dette display et imponerende strømforbrug. Den bruger kun 0,4mA, når den er tændt, men baggrundsbelysningen er deaktiveret. Den bruger mindre end 0,06mA, når du er i dvaletilstand! Det er en af ​​grundene til, at dette viser min favorit. PCD8544 grænseflader til mikrocontrollere gennem et serielt businterface. Det gør skærmen meget nem at bruge med Arduino. Du skal kun tilslutte 8 ledninger.

Jeg har udarbejdet en detaljeret vejledning om, hvordan du bruger Nokia 5110 LCD-skærm med Arduino. Jeg har vedhæftet den video i denne vejledende, det vil give måske nyttige oplysninger om displayet, så jeg opfordrer dig til at se det omhyggeligt. Omkostningerne på displayet er omkring $ 4.

Du kan få det her: ▶

Trin 3: Rotary Encoder

En roterende encoder, også kaldet en akselcoder, er en elektromekanisk enhed, der omdanner vinkelposition eller bevægelse af en aksel eller aksel til en analog eller digital kode. Rotationsindkodere anvendes i mange applikationer, der kræver præcis aksel ubegrænset rotation - herunder industrielle styringer, robotik, specielle formål med fotografiske linser, computerindgangsenheder (såsom optomechaniske mus og trackballs), kontrollerede stressrheometre og roterende radarplatforme.

Den roterende koder, vi skal bruge i dette projekt, er en meget billig encoder. Det har også en knap indlejret og for at få det til at fungere, behøver vi kun at forbinde 5 ledninger. Jeg har udarbejdet en detaljeret vejledning om, hvordan man bruger en roterende encoder. Du kan finde denne video vedhæftet her.

Omkostningerne ved denne roterende koder er meget lave. Det koster omkring $ 1,5.

Du kan få det her ▶

Trin 4: Opbygning af projektet

Lad os nu forbinde alle dele sammen. Før du bygger dette projekt, hvis du ikke har brugt en roterende encoder tidligere, opfordrer jeg dig til at se den vejledning jeg har lavet om roterende kodere. Det vil hjælpe dig med at forstå, hvordan roterende kodere virker, og du vil få nogle erfaringer med dem. Denne video er vedhæftet her.

Jeg har placeret displayet på et lille brødbræt som dette. Lad os først forbinde skærmen. Den første pind på displayet, som er Nulstil, går til digital pin 3 af Arduino Uno, den anden pind går til digital pind 4, den tredje pind går til digital pind 5, den fjerde pind til digital pind 11 og den femte pind til digital pin 13. Den næste pin er Vcc. Vi forbinder Vcc til den positive skinne af breadboard og den brede bordsplade til 3.3V output fra Arduino. Næste knap er Baggrundsbelysning for displayet. Da vi vil styre det via softwaren, forbinder vi den med digital pin 7. Den sidste pin er GND. Vi forbinder GND med den negative skinne af breadboard og den negative skinne af breadboard til Arduino GND.

Nu er alt, hvad vi skal gøre, at forbinde den roterende encoder. Den første pin er GND, og ​​vi forbinder den med negativ skinne på breadboard. Den næste pin er Vcc, og vi forbinder den med den positive skinne af breadboard. Den næste pin er SW, og vi forbinder den med Analog Pin 2. Den næste pin hedder DT, og vi forbinder den med Analog Pin 1. Endelig er pin CLK forbundet til Analog Pin 0. Du kan finde det skematiske diagram for dette projekt i beskrivelsen af ​​videoen nedenfor.

Nu er vi klar til at starte projektet op. Som du kan se, fungerer projektet fint, og menuen virker som forventet! Great, lad os nu se software i projektet.

Trin 5: Projektets kode

I dette projekt bruger vi 4 biblioteker. Vi bruger to biblioteker til displayet og to til rotationsgiveren.

  1. Adafruit GFX:
  2. Nokia 5110:
  3. Encoder Library:
  4. TimerOne bibliotek:

Først skal vi se på drawMenu-funktionen. Denne funktion er ansvarlig for tegning af menuen på displayet. Denne funktion kaldes hvert par millisekunder, så hvis der er en ændring i menuen, er denne funktion ansvarlig for opdatering af menuen på skærmen.

int menuitem = 1;

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

Der er også 3 meget vigtige globale variabler, den variable side, variabelmenuen og variabel ramme. Den variable side husker hvilken brugergrænseflade der vises på skærmen. Så hvis sidevariabelen er 1, er vi i hovedbrugerskærmen, og hvis variablen er 2, er vi i den sekundære brugergrænseflade, hvor vi sætter værdien på en variabel. Menupunktet husker det valgte menupunkt. Så hvis værdien er 1, vælges det første menupunkt, så drawMenu-funktionen skal tegne dette menupunkt som sort med hvide bogstaver. Hvis menupunktet er 2, vælges det andet menupunkt og så videre. Rammevariablen, husker hvilken del af menuen der vises på skærmen. Da den menu, vi har oprettet, indeholder 6 emner, og vi kun kan vise 3 af dem ad gangen, skal vi vide, hvilke emner der vises på skærmen. Rammevariablen fortæller os præcis dette. Hvis ram-variablen har en værdi på 1, viser vi de første tre menupunkter, hvis det er 2, viser vi varer 2,3,4 og så videre.

Jeg forsøgte at gøre koden så let som muligt for at ændre, så jeg har lavet nogle globale variabler, der holder navnene på menupunkterne. På denne måde kan du nemt oprette dine egne menuer uden at søge i kode.

String menuItem1 = "Kontrast";

String menuItem2 = "Volume"; String menuItem3 = "Sprog"; String menuItem4 = "Vanskeligheder"; String menuItem5 = "Lys: ON"; String menuItem6 = "Reset";

boolsk baggrundslys = sand; int kontrast = 60; int volumen = 50;

String sprog 3 = {"EN", "ES", "EL"}; int selectedLanguage = 0;

String vanskeligheder 2 = {"EASY", "HARD"}; int selectedDifficulty = 0;

I første omgang initialiserer vi alle de globale variabler, der er nødvendige i koden. Dernæst initialiserer vi displayet. I loop-funktionen kalder vi først drawMenu-funktionen for at tegne menuen på skærmen. Så læser vi værdien fra rotationsgiveren og kontrollerer, om knappen trykkes. Hvis vi f.eks. Er på hovedbrugerskærmen, og det første menupunkt er valgt, hvis værdien fra den roterende indkoder er steget, øges menædesvariablen, og i næste runde trækker drawMenu-funktionen det andet menupunkt som valgt. Hvis vi nu trykker på knappen på rotationsgiveren, navigerer vi til den anden side, hvor vi indstiller værdien af ​​variablen. Igen ved hjælp af roterende encoderen kan vi øge eller formindske værdien af ​​variablen. Hvis vi trykker på knappen, navigerer vi tilbage til hovedmenu siden, og sidevariabelen falder.

Det er den grundlæggende ide bag denne menu. Vi følger samme procedure for alle menupunkter og sider. Koden er kompleks, den er over 400 linjer lang. Det virker kompliceret, men hvis du prøver det selv, skal du forstå det lettere, og du vil kunne ændre det, udvide det og bruge det i dine egne projekter. Som altid kan du finde koden vedhæftet her.

Trin 6: Test af projektet

Hvis vi læser koden, kan vi se, at projektet virker som forventet. Vi kan navigere menuen op og ned ved hjælp af akslen, og vi kan vælge et hvilket som helst menupunkt ved at trykke på drejeknappen. Hvor sej er det!

Nu da vi ved, hvordan man opbygger menuer til Nokia 5110 LCD-skærme, kan vi tilføje flere funktioner til vores projekter og gøre dem mere brugervenlige. Denne enkle menu, som vi har bygget i dag, kan dog forbedres. Vi kunne bruge afbrydelser i stedet for at kontrollere knappestaterne hele tiden. På denne måde kan vi reducere projektets strømforbrug og gøre koderenseren. Jeg vil forberede en video på afbrydelser snart, så hold tunet. Jeg vil gerne høre din mening om dette menuprojekt.Finder du det nyttigt, og har du planer om at bruge en menu i et af dine projekter. Venligst skriv dine tanker og ideer nedenfor, tak!