- Nødvendige materialer:
- Bli kjent med TFT LCD-skjermmodul:
- Kalibrere TFT LCD-skjermen for berøringsskjerm:
- TFT LCD-tilkoblinger med Arduino:
- Programmering av Arduino for TFT LCD:
- Jobber:
Arduino har alltid bidratt til å bygge prosjekter enkelt og få dem til å se mer attraktive ut. Å programmere en LCD-skjerm med berøringsskjermalternativ kan høres ut som en komplisert oppgave, men Arduino-bibliotekene og skjoldene hadde gjort det veldig enkelt. I dette prosjektet vil vi bruke en 2,4 ”Arduino TFT LCD- skjerm til å bygge vår egen Arduino berøringsskjermkalkulator som kan utføre alle grunnleggende beregninger som tillegg, subtraksjon, divisjon og multiplikasjon.
Nødvendige materialer:
- Arduino Uno
- 2,4 ”TFT LCD-skjerm
- 9V batteri.
Bli kjent med TFT LCD-skjermmodul:
Før vi faktisk dykker inn i prosjektet er det viktig å vite hvordan denne 2,4 ”TFT LCD-modulen fungerer, og hva er typene som finnes i den. La oss se på pinouts for denne 2,4 ”TFT LCD-skjermmodulen.
Som du kan se, er det 28 pinner som passer perfekt til ethvert Arduino Uno / Arduino Mega Board. En liten klassifisering av disse pinnene er gitt i tabellen nedenfor.
Som du kan se, kan pinnene klassifiseres i fire hovedklassifiseringer som LCD Command Pins, LCD Data Pins, SD Card Pins og Power Pins. Vi trenger ikke vite mye om detaljert bruk av disse pinnene, siden de vil bli tatt vare på av vårt Arduino-bibliotek.
Du finner også et SD-kortspor nederst på modulen vist ovenfor, som kan brukes til å laste inn et SD-kort med bmp-bildefiler, og disse bildene kan vises på TFT LCD-skjermen ved hjelp av Arduino-programmet.
En annen viktig ting å merke seg er Interface IC. Det er mange typer TFT-moduler tilgjengelig i markedet, fra den originale Adafruit TFT LCD-modulen til billige kinesiske kloner. Et program som fungerer perfekt for Adafruit-skjoldet ditt, fungerer kanskje ikke det samme for kinesiske breakoutboards. Så det er veldig viktig å vite hvilke typer LCD-skjerm du holder i hånden. Denne detaljene må hentes fra leverandøren. Hvis du har en billig klon som min, bruker den mest sannsynlig ili9341 driver IC. Du kan følge denne TFT LCD-grensesnittet med Arduino-opplæringen for å prøve noen grunnleggende eksempelprogrammer og bli komfortabel med LCD-skjermen. Sjekk også våre andre TFT LCD-prosjekter med Arduino her:
- Slik bruker du NeoPixel LED Strip med Arduino og TFT LCD
- Smart telefonstyrt digital kodelås ved hjelp av Arduino
Kalibrere TFT LCD-skjermen for berøringsskjerm:
Hvis du planlegger å bruke berøringsskjermfunksjonen til TFT LCD-modulen din, må du kalibrere den for å få den til å fungere skikkelig. En LCD-skjerm uten kalibrering kan fungere lite sannsynlig, for eksempel kan du berøre ett sted og TFT kan svare for et berøring et annet sted. Disse kalibreringsresultatene vil ikke være like for alle tavler, og derfor står du alene å gjøre dette.
Den beste måten å kalibrere er å bruke kalibreringseksempelprogrammet (leveres med bibliotek) eller bruke den serielle skjermen for å oppdage feilen. Imidlertid for dette prosjektet siden størrelsen på knappene er stor, bør kalibrering ikke være et stort problem, og jeg vil også forklare hvordan du kan kalibrere skjermen under programmeringsdelen nedenfor.
TFT LCD-tilkoblinger med Arduino:
Den 2,4 ”TFT LCD-skjermen er et perfekt Arduino Shield. Du kan skyve LCD-skjermen direkte på toppen av Arduino Uno, og den passer perfekt med pinnene og glir inn. Imidlertid, når det gjelder sikkerhet, dekk programmeringsterminalen til Arduino UNO med et lite isolasjonstape, bare i tilfelle hvis terminalen kommer i kontakt med TFT LCD-skjermen. LCD-en montert på UNO vil se ut som dette nedenfor.
Programmering av Arduino for TFT LCD:
Vi bruker SPFD5408-biblioteket for å få denne arduino-kalkulatorkoden til å fungere. Dette er et modifisert bibliotek av Adafruit og kan fungere sømløst med vår LCD TFT-modul. Du kan sjekke hele programmet på slutten av denne artikkelen.
Merk: Det er veldig viktig for deg å installere dette biblioteket i Arduino IDE eller dette programmet for å kompilere uten feil.
For å installere dette biblioteket, kan du bare klikke på lenken over som tar deg til en Github-side. Der klikker du på klone eller laster ned og velger “Last ned ZIP”. En zip-fil lastes ned.
Åpne nå Arduino IDE og velg Sketch -> Include Librarey -> Add.ZIP library. Et nettleservindu åpnes, naviger til ZIP-filen og klikk “OK”. Du bør legge merke til "Bibliotek lagt til biblioteket ditt" nederst til venstre på Arduino, hvis det lykkes. En detaljert veiledning for å gjøre det samme er gitt i grensesnittveiledningen.
Nå kan du bruke koden nedenfor i din Arduino IDE og laste den opp til din Arduino UNO for at berøringsskjermkalkulatoren skal fungere. Lenger ned har jeg forklart koden i små segmenter.
Vi trenger tre biblioteker for at dette programmet skal fungere; alle disse tre bibliotekene ble gitt i ZIP-filen du lastet ned fra lenken ovenfor. Jeg har ganske enkelt tatt dem med i koden som vist nedenfor.
#inkludere
Som sagt tidligere, må vi kalibrere LCD-skjermen for å få den til å fungere som forventet, men ikke bekymre deg om at verdiene gitt her er nesten universelle. Variablene TS_MINX, TS_MINY, TS_MAXX og TS_MAXY bestemmer kalibreringen av skjermen. Du kan leke rundt dem hvis du føler at kalibreringen ikke er tilfredsstillende.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Som vi vet kan TFT LCD-skjermen vise mange farger, må alle disse fargene oppgis i hex-verdi. For å gjøre det mer menneskelig lesbart tilordner vi disse verdiene til en variabel som vist nedenfor.
#define WHITE 0x0000 // Black-> White #define GUL 0x001F // Blue-> Yellow #define CYAN 0xF800 // Red-> Cyan #define PINK 0x07E0 // Green-> Pink #define RED 0x07FF // Cyan -> Red #define GREEN 0xF81F // Pink -> Green #define BLUE 0xFFE0 // Yellow-> Blue #define BLACK 0xFFFF // White-> Black
OK nå, vi kan komme inn i programmeringsdelen. Det er tre seksjoner involvert i dette programmet. Den ene er å lage et brukergrensesnitt for en kalkulator med knapper og display. Deretter oppdager knappene basert på brukerne berører og til slutt beregner resultatene og viser dem. La oss komme gjennom dem en etter en.
1. Opprette et brukergrensesnitt for kalkulator:
Det er her du kan bruke mye kreativitet til å designe brukergrensesnittet til kalkulatoren. Jeg har rett og slett laget et grunnleggende oppsett av en kalkulator med 16 knapper og en skjermenhet. Du må konstruere designet akkurat som du vil tegne noe på MS-maling. Bibliotekene som er lagt til, lar deg tegne linjer, rektangel, sirkler, tegn, strenger og mye mer av hvilken som helst farge. Du kan forstå de tilgjengelige funksjonene fra denne artikkelen.
Jeg har brukt linje- og boksetegningsevnen til å designe et brukergrensesnitt som ser veldig ut som kalkulatoren på 90-tallet. Hver boks har en bredde og høyde på 60 piksler.
// Tegn resultatboksen tft.fillRect (0, 0, 240, 80, CYAN); // Tegn første kolonne tft.fillRect (0,260,60,60, RED); tft.fillRect (0,200,60,60, SVART); tft.fillRect (0,140,60,60, SVART); tft.fillRect (0,80,60,60, SVART); // Tegn tredje kolonne tft.fillRect (120,260,60,60, GRØNN); tft.fillRect (120,200,60,60, SVART); tft.fillRect (120,140,60,60, SVART); tft.fillRect (120,80,60,60, SVART); // Tegn sekund og fjerde kolonne for (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, BLUE); tft.fillRect (60, b, 60,60, SVART);} // Tegn horisontale linjer for (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Tegn vertikale linjer for (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, WHITE); // Vis tastaturetiketter for (int j = 0; j <4; j ++) {for (int i = 0; i <4; i ++) {tft.setCursor (22 + (60 * i), 100 + (60 *) j)); tft.setTextSize (3); tft.setTextColor (HVIT); tft.println (symbol);
2. Oppdage knappene:
En annen utfordrende oppgave er å oppdage brukerens berøring. Hver gang brukeren berører et sted, kan vi hvordan X- og Y-posisjonen til pikslen han berørte. Denne verdien kan vises på den serielle skjermen ved å bruke println som vist nedenfor.
TSPoint p = waitTouch (); X = py; Y = px; Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y);
Siden vi har designet esken med bredde og høyde på 60 piksler hver, og har fire rader og for kolonner som starter fra (0,0). Posisjonen til hver boks kan forutsies som vist på bildet nedenfor.
Men i praktisk tilfelle vil ikke dette være resultatet. Det vil være stor forskjell mellom forventet og faktisk verdi på grunn av kalibreringsproblemet.
Så for å forutsi den nøyaktige posisjonen til boksen, må du klikke på linjen og sjekke dens tilsvarende posisjon på seriell skjerm. Dette er kanskje ikke den mest profesjonelle måten å gjøre det på, men likevel fungerer det perfekt. Jeg målte posisjonen til alle linjene og oppnådde verdiene nedenfor.
Nå, siden vi vet posisjonen til alle boksene. Når en bruker berører hvor som helst, kan vi forutsi hvor han har berørt ved å sammenligne (X, Y) verdiene med verdien for hver rute som vist nedenfor.
if (X <105 && X> 50) // Detecting Buttons on Column 2 {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // Knapp 0 trykkes hvis (Number == 0) Number = 0; annet Tall = (Antall * 10) + 0; // Trykket to ganger} hvis (Y> 85 && Y <140) {Serial.println ("Button 2"); hvis (Number == 0) Number = 2; annet Tall = (Antall * 10) + 2; // trykket to ganger}
3. Vise tall og beregne resultatet:
Det siste trinnet er å beregne resultatet og vise dem på TFT LCD-skjerm. Denne arduino-kalkulatoren kan bare utføre operasjoner med to tall. Disse to tallene er navngitt som variablene "Num1" og "Num2". Variabelen "Antall" gir og tar verdi fra Num1 og Num2 og bærer også resultatet.
Når en bruk trykker på en knapp, legges ett siffer til tallet. Når du trykker på en annen knapp, blir det forrige sifferet multiplisert med 10, og det nye tallet blir lagt til med det. For eksempel, hvis vi trykker på 8 og deretter trykker på 5 og deretter trykker på 7. Så vil først variabelen holde 8 og deretter (8 * 10) + 5 = 85 deretter (85 * 10) +7 = 857. Så til slutt vil variabelen ha verdien 857 med den.
hvis (Y> 192 && Y <245) {Serial.println ("Knapp 8"); hvis (Number == 0) Number = 8; annet Tall = (Antall * 10) + 8; // presset igjen}
Når vi utfører noen operasjoner som tillegg, når brukerne trykker på tilleggsknappen, vil verdien fra Number bli overført til Num1, og deretter vil Number bli null, slik at det gjør seg klar til å ta inngangen for andre nummer.
Når du trykker på Equal, vil verdien i Number bli sendt til Num2, og deretter vil den respektive beregningen (i dette tilfellet tillegg) bli gjort, og resultatet vil igjen bli lagret i variabelen "Number".
Endelig vil denne verdien vises på LCD-skjermen.
Jobber:
Arbeidet med denne Arduino berøringsskjermkalkulatoren er enkel. Du må laste opp koden nedenfor på Arduino og skyte den opp. Du får kalkulatoren vist på LCD-skjermen.
Nå kan du skrive inn hvilket som helst tall og utføre beregningene. Det er begrenset til bare to operand og eneste operatør for nå. Men du kan tilpasse koden for å få den til å ha mange muligheter.
Du må trykke på "C" for å tømme verdien på skjermen hver gang etter at du har utført en beregning. Håper du forsto prosjektet og likte å bygge noe lignende. Hvis du er i tvil, er du velkommen til å legge dem ut på forum eller i kommentarfeltet nedenfor. Vi sees neste gang med et annet interessant prosjekt inntil da happy computing !!
Sjekk også demonstrasjonsvideoen nedenfor.