- Nødvendige materialer:
- Lær TFT LCD-skærmmodul at kende:
- Kalibrering af TFT LCD-skærm til berøringsskærm:
- TFT LCD-forbindelser med Arduino:
- Programmering af din Arduino til TFT LCD:
- Arbejder:
Arduino har altid hjulpet med at opbygge projekter let og få dem til at se mere attraktive ud. Programmering af en LCD-skærm med berøringsskærmindstilling lyder måske som en kompliceret opgave, men Arduino-bibliotekerne og skjoldene havde gjort det virkelig nemt. I dette projekt vil vi bruge en 2,4 ”Arduino TFT LCD- skærm til at bygge vores egen Arduino Touch Screen-lommeregner, der kan udføre alle grundlæggende beregninger som Addition, Subtraction, Division og Multiplication.
Nødvendige materialer:
- Arduino Uno
- 2,4 ”TFT LCD-skærm
- 9V batteri.
Lær TFT LCD-skærmmodul at kende:
Før vi rent faktisk dykker ned i projektet, er det vigtigt at vide, hvordan dette 2,4 ”TFT LCD-modul fungerer, og hvilke typer der findes i det. Lad os se på pinouts til dette 2,4 ”TFT LCD-skærmmodul.
Som du kan se, er der 28 ben, der passer perfekt til ethvert Arduino Uno / Arduino Mega Board. En lille klassificering af disse ben findes i nedenstående tabel.
Som du kan se, kan stifterne klassificeres i fire hovedklassifikationer, såsom LCD-kommandostifter, LCD-datapinde, SD-kortstifter og strømstifter. Vi behøver ikke vide meget om den detaljerede funktion af disse stifter, da de vil blive taget hånd om af vores Arduino-bibliotek.
Du kan også finde et SD-kortspor i bunden af modulet vist ovenfor, som kan bruges til at indlæse et SD-kort med bmp-billedfiler, og disse billeder kan vises på vores TFT LCD-skærm ved hjælp af Arduino-programmet.
En anden vigtig ting at bemærke er dit interface IC. Der er mange typer TFT-moduler tilgængelige på markedet startende fra det originale Adafruit TFT LCD-modul til billige kinesiske kloner. Et program, der fungerer perfekt til dit Adafruit-skjold, fungerer muligvis ikke det samme for kinesiske breakoutboards. Så det er meget vigtigt at vide, hvilke typer LCD-skærme du holder i hånden. Denne detalje skal hentes fra sælgeren. Hvis du har en billig klon som min, bruger den sandsynligvis ili9341 driver IC. Du kan følge denne TFT LCD-grænseflade med Arduino-tutorial for at prøve nogle grundlæggende eksempelprogrammer og blive fortrolig med LCD-skærmen. Tjek også vores andre TFT LCD-projekter med Arduino her:
- Sådan bruges NeoPixel LED Strip med Arduino og TFT LCD
- Smart telefonstyret digital kodelås ved hjælp af Arduino
Kalibrering af TFT LCD-skærm til berøringsskærm:
Hvis du planlægger at bruge berøringsskærmsfunktionen på dit TFT LCD-modul, skal du kalibrere det for at få det til at fungere korrekt. En LCD-skærm uden kalibrering fungerer muligvis usandsynligt, for eksempel kan du berøre et sted, og TFT reagerer muligvis på et tryk et andet sted. Disse kalibreringsresultater vil ikke være ens for alle tavler, og derfor står du alene til at gøre dette.
Den bedste måde at kalibrere på er at bruge kalibreringseksemplet (leveres med bibliotek) eller bruge den serielle skærm til at opdage din fejl. Men for dette projekt, da størrelsen på knapper er stor, skal kalibrering ikke være et stort problem, og jeg vil også forklare, hvordan du kan kalibrere din skærm under programmeringsafsnittet nedenfor.
TFT LCD-forbindelser med Arduino:
2,4 ”TFT LCD-skærmen er et perfekt Arduino Shield. Du kan skubbe LCD-skærmen direkte oven på Arduino Uno, og den passer perfekt med stifterne og glider ind igennem. Som sikkerhedssikkerhed skal du dog dække programmeringsterminalen på din Arduino UNO med et lille isoleringstape, bare i tilfælde af at terminalen kommer i kontakt med din TFT LCD-skærm. LCD'et samlet på UNO vil se sådan ud nedenfor.
Programmering af din Arduino til TFT LCD:
Vi bruger SPFD5408-biblioteket til at få denne arduino-regnemaskekode til at fungere. Dette er et modificeret bibliotek af Adafruit og kan fungere problemfrit med vores LCD TFT-modul. Du kan kontrollere det komplette program i slutningen af denne artikel.
Bemærk: Det er meget vigtigt for dig at installere dette bibliotek i din Arduino IDE eller dette program til at kompilere uden nogen fejl.
For at installere dette bibliotek kan du blot klikke på linket ovenfor, som fører dig til en Github-side. Klik der på klon eller download, og vælg “Download ZIP”. En zip-fil downloades.
Åbn nu Arduino IDE, og vælg Skitse -> Inkluder Librarey -> Tilføj.ZIP-bibliotek. Et browservindue åbnes, naviger til ZIP-filen og klik på “OK”. Du skal bemærke "Bibliotek tilføjet til dine biblioteker" i nederste venstre hjørne af Arduino, hvis det lykkes. En detaljeret guide til at gøre det samme findes i Interfacing Tutorial.
Nu kan du bruge koden nedenfor i din Arduino IDE og uploade den til din Arduino UNO for berøringsskærmberegner til at fungere. Længere nede har jeg forklaret koden i små segmenter.
Vi har brug for tre biblioteker for at dette program skal fungere; alle disse tre biblioteker blev givet i ZIP-filen, som du downloadede fra ovenstående link. Jeg har simpelthen inkluderet dem i koden som vist nedenfor.
#omfatte
Som sagt tidligere er vi nødt til at kalibrere LCD-skærmen for at få den til at fungere som forventet, men rolig, værdierne her er næsten universelle. Variablerne TS_MINX, TS_MINY, TS_MAXX og TS_MAXY bestemmer kalibreringen af skærmen. Du kan lege rundt omkring dem, hvis du føler, at kalibreringen ikke er tilfredsstillende.
#definer TS_MINX 125 #definer TS_MINY 85 #definer TS_MAXX 965 #definer TS_MAXY 905
Som vi ved, kan TFT LCD-skærmen vise mange farver, skal alle disse farver indtastes i hexadecimeret værdi. For at gøre det mere menneskeligt læsbart tildeler vi disse værdier til en variabel som vist nedenfor.
#definer HVID 0x0000 // Sort-> Hvid #definer GUL 0x001F // Blå-> Gul #definer CYAN 0xF800 // Rød-> Cyan #definer PINK 0x07E0 // Grøn-> Pink #definer RØD 0x07FF // Cyan -> Rød #define GREEN 0xF81F // Pink -> Green #define BLUE 0xFFE0 // Yellow-> Blue #define BLACK 0xFFFF // White-> Black
Okay nu, vi kan komme ind i programmeringsdelen. Der er tre sektioner involveret i dette program. Den ene er at oprette en brugergrænseflade til en lommeregner med knapper og display. Derefter registrerer knapperne baseret på brugerne berøring og til sidst beregner resultaterne og viser dem. Lad os komme igennem dem en efter en.
1. Oprettelse af et brugergrænseflade til lommeregner:
Det er her, du kan bruge meget af din kreativitet til at designe lommeregnerens brugergrænseflade. Jeg har simpelthen lavet et grundlæggende layout af en lommeregner med 16 knapper og en displayenhed. Du skal konstruere designet, ligesom du tegner noget på MS-maling. De tilføjede biblioteker giver dig mulighed for at tegne linjer, rektangel, cirkler, tegn, strenge og meget mere af enhver foretrukken farve. Du kan forstå de tilgængelige funktioner i denne artikel.
Jeg har brugt linie- og boksetegningsevnerne til at designe et brugergrænseflade, der ligner 90'ernes lommeregner. Hver kasse har en bredde og højde på 60 pixels.
// Tegn resultatfeltet tft.fillRect (0, 0, 240, 80, CYAN); // Tegn første kolonne tft.fillRect (0,260,60,60, RØD); tft.fillRect (0,200,60,60, SORT); tft.fillRect (0,140,60,60, SORT); tft.fillRect (0,80,60,60, SORT); // Tegn tredje kolonne tft.fillRect (120,260,60,60, GRØN); tft.fillRect (120.200, 60, 60, SORT); tft.fillRect (120,140,60,60, SORT); tft.fillRect (120,80,60,60, SORT); // Tegn Secound & Fourth Column for (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, BLUE); tft.fillRect (60, b, 60,60, BLACK);} // Tegn vandrette linjer for (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Tegn lodrette 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 (HVID); tft.println (symbol);
2. Registrering af knapperne:
En anden udfordrende opgave er at opdage brugerens berøring. Hver gang brugeren rører et eller andet sted, kan vi se, hvor X- og Y-positionen for den pixel, han rørte ved. Denne værdi kan vises på den serielle skærm ved hjælp af println som vist nedenfor.
TSPoint p = waitTouch (); X = py; Y = px; Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y);
Da vi har designet kassen med bredde og højde på 60 pixel hver og har fire rækker og til kolonner startende fra (0,0). Positionen for hver kasse kan forudsiges som vist på billedet nedenfor.
Men i praksis vil dette ikke være resultatet. Der vil være en stor forskel mellem den forventede og faktiske værdi på grund af kalibreringsproblemet.
Så for at forudsige den nøjagtige placering af kassen skal du klikke på linjen og kontrollere dens tilsvarende position på den serielle skærm. Dette er måske ikke den mest professionelle måde at gøre det på, men det fungerer stadig perfekt. Jeg målte placeringen af alle linjerne og opnåede nedenstående værdier.
Nu, da vi kender placeringen af alle kasser. Når en bruger rører hvor som helst, kan vi forudsige, hvor han har rørt ved at sammenligne hans (X, Y) værdier med værdien for hvert felt som vist nedenfor.
hvis (X <105 && X> 50) // Registrering af knapper i kolonne 2 {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // Knap 0 trykkes, hvis (Number == 0) Number = 0; ellers Number = (Number * 10) + 0; // Trykt to gange} hvis (Y> 85 && Y <140) {Serial.println ("Knap 2"); hvis (Number == 0) Number = 2; ellers Number = (Number * 10) + 2; // Trykt to gange}
3. Visning af numre og beregning af resultatet:
Det sidste trin er at beregne resultatet og vise dem på TFT LCD-skærm. Denne arduino-regnemaskine kan kun udføre operation med 2 tal. Disse to tal er navngivet som variabler "Num1" og "Num2". Variablen "Number" giver og tager værdi fra Num1 og Num2 og bærer også resultatet.
Når en brug trykker på en knap, tilføjes et ciffer til nummeret. Når der trykkes på en anden knap, ganges det forrige ciffer med 10, og det nye tal tilføjes med det. Hvis vi f.eks. Trykker på 8 og derefter trykker på 5 og derefter trykker på 7. Derefter holder variablen 8, derefter (8 * 10) + 5 = 85, derefter (85 * 10) +7 = 857. Så endelig har variablen værdien 857 med den.
hvis (Y> 192 && Y <245) {Serial.println ("Knap 8"); hvis (Number == 0) Number = 8; ellers Number = (Number * 10) + 8; // trykket igen}
Når vi udfører en operation som tilføjelse, når brugerne trykker på tilføjelsesknappen, overføres værdien fra Number til Num1, og derefter bliver Number nul, så det gør sig klar til at tage input til andet nummer.
Når der trykkes på Equal, sendes værdien i Number til Num2, hvorefter den respektive beregning (i dette tilfælde tilføjelse) foretages, og resultatet lagres igen i variablen "Number".
Endelig vises denne værdi på LCD-skærmen.
Arbejder:
Arbejdet med denne Arduino berøringsskærmberegner er enkel. Du skal uploade nedenstående kode på din Arduino og fyre den op. Du får regnemaskinen vist på din LCD-skærm.
Nu kan du indtaste et vilkårligt tal og udføre dine beregninger. Det er begrænset til kun to operand og kun operatør for nu. Men du kan tilpasse koden for at få den til at have en masse mulighed.
Du skal trykke på "C" for at rydde værdien på skærmen hver gang efter udførelse af en beregning. Håber du forstod projektet og nød at bygge noget lignende. Hvis du er i tvivl, er du velkommen til at sende dem på fora eller i kommentarfeltet nedenfor. Vi ses næste gang med et andet interessant projekt indtil da happy computing !!
Tjek også demonstrationsvideoen nedenfor.