Innholdsfortegnelse:

Arduino TFT LCD berøringsskjermkalkulator: 3 trinn
Arduino TFT LCD berøringsskjermkalkulator: 3 trinn

Video: Arduino TFT LCD berøringsskjermkalkulator: 3 trinn

Video: Arduino TFT LCD berøringsskjermkalkulator: 3 trinn
Video: Управление подсветкой с дисплея 2024, November
Anonim
Arduino TFT LCD berøringsskjermkalkulator
Arduino TFT LCD berøringsskjermkalkulator

Hei Gutter i denne instruksjonene lærer vi hvordan du lager en kalkulator ved hjelp av Arduino Uno med 3,5 TFT LCD berøringsskjerm. Så vi skriver en kode og laster den opp til arduino som viser kalkulatorgrensesnittet på displayet og tar berøringsfunksjonalitet og gi produksjonen av grunnleggende matematiske uttrykk.

Trinn 1: Ting du trenger

Ting du trenger
Ting du trenger
Ting du trenger
Ting du trenger

For dette prosjektet trenger du følgende ting: 3,5 TFT LCD DISPLAYARDUINO UNO

Trinn 2: Installere TFT -skjermbibliotek i Arduino IDE

Installere TFT -skjermbibliotek i Arduino IDE
Installere TFT -skjermbibliotek i Arduino IDE

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. 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 ovenfor som tar deg til en Github -side. Der klikker du på klone eller laster ned og velger "Last ned ZIP". En zip -fil vil bli lastet ned. Nå åpner du Arduino IDE og velger 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 bibliotekene dine" nederst til venstre på Arduino.

Trinn 3: Last opp kalkulator -koden

Last opp kalkulator -koden
Last opp kalkulator -koden
Last opp kalkulator -koden
Last opp kalkulator -koden

Etter at du har installert biblioteket, kobler du skjermen til Arduino og kopierer følgende kode og laster den opp til Arduino. bibliotek#inkluderer "SPFD5408_TouchScreen.h"/*_ End of Libraries _*//*_ Definer LCD -pins (jeg har tilordnet standardverdiene) _*/#definer YP A1 // må være en analog pin, bruk "En" notasjon!# definere XM A2 // må være en analog pin, bruk "En" notasjon! #define YM 7 // kan være en digital pin#definere XP 6 // kan være en digital pin#definere LCD_CS A3#definere LCD_CD A2#definere LCD_WR A1#definere LCD_RD A0#definere LCD_RESET A4/*_ Slutt på definisjoner _*//*_ Tilordne navn til farger og trykk _*/#definere HVIT 0x0000 // Svart-> Hvit#definere GUL 0x001F // Blå-> Gul#definere CYAN 0xF800 // Rød-> Cyan#definere ROSE 0x07E0 // Grønn-> Rosa#definere RØD 0x07FF // Cyan-> Rød#definere GRØNN 0xF81F // Rosa-> Grønn #define BLÅ 0xFFE0 // Gul- > Blå#definere SVART 0xFFFF // Hvit-> Svart#definere MINPRESSURE 10#definere MAXPRESSURE 1000/*_ Tildelt _*//*_ Kalibrer TFT LCD _*/#definere TS_MINX 125#definere TS_MINY 85#definere TS_MAXX 965#definere TS_MAXY 905/* _ Slutt på kalibrering _*/TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); // 300 er sensitivitetenAdafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Start kommunikasjonen med LCDString -symbolet [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; lang Num1, Num2, Number; røye handling; boolsk resultat = usant; ugyldig oppsett () {Serial.begin (9600); // Bruk seriell skjerm for feilsøking av tft.reset (); // Tilbakestill alltid ved start tft.begin (0x9341); // LCD -skjermen min bruker LIL9341 Interface driver IC tft.setRotation (2); // Jeg har nettopp roated slik at strømkontakten vender opp - valgfritt tft.fillScreen (WHITE); IntroScreen (); draw_BoxNButtons (); } void loop () {TSPoint p = waitTouch (); X = p.y; Y = p.x; // Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y); DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); forsinkelse (300);} TSPoint waitTouch () {TSPoint p; gjør {p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); } mens ((s. MAXPRESSURE)); p.x = kart (p.x, TS_MINX, TS_MAXX, 0, 320); p.y = map (p.y, TS_MINY, TS_MAXY, 0, 240);; return p;} void DetectButtons () {if (X0) // Detecting Buttons on Column 1 {if (Y> 0 && Y <85) // If cancel button is try {Serial.println ("Button Cancel"); Tall = Num1 = Num2 = 0; result = false;} hvis (Y> 85 && Y <140) // Hvis knapp 1 trykkes {Serial.println ("Knapp 1"); hvis (tall == 0) tall = 1; annet Nummer = (Antall*10) + 1; // Trykk to ganger} hvis (Y> 140 && Y <192) // Hvis knapp 4 trykkes på {Serial.println ("knapp 4"); hvis (tall == 0) tall = 4; annet tall = (tall*10) + 4; // Trykk to ganger} hvis (Y> 192 && Y <245) // Hvis knapp 7 trykkes på {Serial.println ("knapp 7"); hvis (tall == 0) tall = 7; annet Nummer = (Antall*10) + 7; // Trykket to ganger}} hvis (X50) // Oppdager knapper på kolonne 2 {if (Y> 0 && Y <85) {Serial.println ("Knapp 0"); // Knapp 0 trykkes hvis (tall == 0) tall = 0; annet tall = (tall*10) + 0; // Trykket to ganger} hvis (Y> 85 && Y <140) {Serial.println ("Knapp 2"); hvis (tall == 0) tall = 2; annet Nummer = (Antall*10) + 2; // Trykt to ganger} hvis (Y> 140 && Y <192) {Serial.println ("Knapp 5"); hvis (tall == 0) tall = 5; annet Nummer = (Antall*10) + 5; // Trykket to ganger} hvis (Y> 192 && Y <245) {Serial.println ("Knapp 8"); hvis (tall == 0) tall = 8; annet tall = (tall*10) + 8; // Trykket to ganger}} hvis (X105) // Oppdager knapper på kolonne 3 {if (Y> 0 && Y <85) {Serial.println ("Button Equal"); Num2 = Antall; resultat = sant; } hvis (Y> 85 && Y <140) {Serial.println ("Knapp 3"); hvis (tall == 0) tall = 3; annet Nummer = (Antall*10) + 3; // Trykket to ganger} hvis (Y> 140 && Y <192) {Serial.println ("Knapp 6"); hvis (tall == 0) tall = 6; annet Nummer = (Antall*10) + 6; // Trykt to ganger} hvis (Y> 192 && Y <245) {Serial.println ("Knapp 9"); hvis (tall == 0) tall = 9; annet tall = (tall*10) + 9; // Trykk to ganger}} hvis (X165) // Oppdager knapper på kolonne 3 {Num1 = Number; Antall = 0; tft.setCursor (200, 20); tft.setTextColor (RØD); hvis (Y> 0 && Y <85) {Serial.println ("tillegg"); handling = 1; tft.println ('+');} if (Y> 85 && Y <140) {Serial.println ("Subtraksjon"); handling = 2; tft.println ('-');} if (Y> 140 && Y <192) {Serial.println ("Multiplikasjon"); handling = 3; tft.println ('*');} if (Y> 192 && Y <245) {Serial.println ("Devesion"); handling = 4; tft.println ('/');} forsinkelse (300); }} void CalculateResult () {if (action == 1) Number = Num1+Num2; if (action == 2) Number = Num1-Num2; hvis (handling == 3) Tall = Num1*Num2; hvis (handling == 4) Antall = Num1/Num2; } ugyldig DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // tøm resultatboksen tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (SVART); tft.println (Antall); // oppdater ny verdi} void IntroScreen () {tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor (RØD); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("CALCULATOR"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (BLÅ); tft.println ("-Circut Digest"); forsinkelse (1800);} void draw_BoxNButtons () {// Tegn resultatboksen 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, 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, BLÅ); 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 [j] ); }}} Etter at du har lastet opp koden, kan du se kalkulatoren kjøre på skjermen som min, og nå kan du utføre grunnleggende matematikkberegninger på dette. Så gøy å lage din egen kalkulator med Arduino UNO.

Anbefalt: