Indholdsfortegnelse:

Arduino TFT LCD Touchscreen Calculator: 3 trin
Arduino TFT LCD Touchscreen Calculator: 3 trin

Video: Arduino TFT LCD Touchscreen Calculator: 3 trin

Video: Arduino TFT LCD Touchscreen Calculator: 3 trin
Video: TFT Touch Display Calculator | SdevElectronics 2024, Juli
Anonim
Arduino TFT LCD Touchscreen Calculator
Arduino TFT LCD Touchscreen Calculator

Hej Guys i denne instruks vil vi lære at lave en lommeregner ved hjælp af Arduino Uno med 3,5 TFT LCD Touchscreen display. Så vi skriver en kode og uploader den til arduino, som viser lommeregnerens grænseflade på displayet og tager berøringsfunktionalitet og give output af grundlæggende matematiske udtryk.

Trin 1: Ting du har brug for

Ting du har brug for
Ting du har brug for
Ting du har brug for
Ting du har brug for

Til dette projekt skal du bruge følgende ting: 3,5 TFT LCD DISPLAYARDUINO UNO

Trin 2: Installation af TFT Display Library i Arduino IDE

Installation af TFT -skærmbibliotek i Arduino IDE
Installation af TFT -skærmbibliotek i Arduino IDE

Vi bruger SPFD5408 -biblioteket:

for at få denne arduino -lommeregnerkode til at fungere. Dette er et modificeret bibliotek af Adafruit og kan fungere problemfrit med vores LCD TFT -modul. Det er meget vigtigt for dig at installere dette bibliotek i din Arduino IDE eller dette program til at kompilere uden 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 vil blive downloadet. Nu skal du åbne Arduino IDE og vælge Sketch -> Include Librarey -> Add. ZIP library. Et browservindue åbnes, naviger til ZIP -filen og klik på "OK". Du bør bemærke "Bibliotek tilføjet til dine biblioteker" i nederste venstre hjørne af Arduino.

Trin 3: Upload regnemaskinkoden

Upload lommeregner -koden
Upload lommeregner -koden
Upload lommeregner -koden
Upload lommeregner -koden

Efter installation af biblioteket skal du slutte skærmen til Arduino og kopiere følgende kode og uploade den til Arduino. bibliotek#inkluderer "SPFD5408_TouchScreen.h"/*_ End of Libraries _*//*_ Definer LCD -ben (jeg har tildelt standardværdierne) _*/#definer YP A1 // skal være en analog pin, brug "En" notation!# definere XM A2 // skal være en analog pin, brug "En" notation! #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/*_ Slut på defanitions _*//*_ Tildel navne til farver og tryk _*/#definere HVID 0x0000 // Sort-> Hvid#definere GUL 0x001F // Blå-> Gul#definere CYAN 0xF800 // Rød-> Cyan#definer PINK 0x07E0 // Grøn-> Pink#definer RØD 0x07FF // Cyan-> Rød#definere GRØN 0xF81F // Pink-> Grøn #define BLÅ 0xFFE0 // Gul- > Blå#definere SORT 0xFFFF // Hvid-> Sort#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/* _ End of Calibration _*/TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); // 300 er følsomhedenAdafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Start kommunikation med LCDString -symbolet [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; langt Num1, Num2, Tal; char handling; boolsk resultat = falsk; ugyldig opsætning () {Serial.begin (9600); // Brug seriel skærm til fejlfinding af tft.reset (); // Nulstil altid ved start tft.begin (0x9341); // Mit LCD bruger LIL9341 Interface driver IC tft.setRotation (2); // Jeg har lige roated, så strømstikket vender opad - valgfri 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; gør {p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); } mens ((s. MAXPRESSURE)); p.x = kort (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) // Hvis der trykkes på annulleringsknappen {Serial.println ("Button Cancel"); Tal = Num1 = Num2 = 0; resultat = falsk;} hvis (Y> 85 && Y <140) // Hvis der trykkes på knap 1 {Serial.println ("Knap 1"); hvis (tal == 0) tal = 1; ellers Tal = (Tal*10) + 1; // Tryk to gange} hvis (Y> 140 && Y <192) // Hvis der trykkes på knap 4 {Serial.println ("knap 4"); hvis (tal == 0) tal = 4; ellers Tal = (Tal*10) + 4; // Tryk to gange} hvis (Y> 192 && Y <245) // Hvis der trykkes på knap 7 {Serial.println ("knap 7"); hvis (tal == 0) tal = 7; ellers Tal = (Tal*10) + 7; // Tryk to gange}} hvis (X50) // Registrering af knapper i kolonne 2 {if (Y> 0 && Y <85) {Serial.println ("Knap 0"); // Knap 0 trykkes, hvis (Tal == 0) Tal = 0; ellers Tal = (Tal*10) + 0; // Tryk to gange} hvis (Y> 85 && Y <140) {Serial.println ("Knap 2"); hvis (tal == 0) tal = 2; ellers Tal = (Tal*10) + 2; // Trykt to gange} hvis (Y> 140 && Y <192) {Serial.println ("Knap 5"); hvis (tal == 0) tal = 5; ellers Tal = (Tal*10) + 5; // Trykt to gange} hvis (Y> 192 && Y <245) {Serial.println ("Knap 8"); hvis (tal == 0) tal = 8; ellers Tal = (Tal*10) + 8; // Trykt to gange}} hvis (X105) // Registrering af knapper i kolonne 3 {if (Y> 0 && Y <85) {Serial.println ("Button Equal"); Num2 = Tal; resultat = sandt; } hvis (Y> 85 && Y <140) {Serial.println ("Knap 3"); hvis (tal == 0) tal = 3; ellers Tal = (Tal*10) + 3; // Trykt to gange} hvis (Y> 140 && Y <192) {Serial.println ("Knap 6"); hvis (tal == 0) tal = 6; ellers Tal = (Tal*10) + 6; // Tryk to gange} hvis (Y> 192 && Y <245) {Serial.println ("Knap 9"); hvis (tal == 0) tal = 9; ellers Tal = (Tal*10) + 9; // Tryk to gange}} hvis (X165) // Registrering af knapper i kolonne 3 {Num1 = Number; Antal = 0; tft.setCursor (200, 20); tft.setTextColor (RØD); hvis (Y> 0 && Y <85) {Serial.println ("tilføjelse"); handling = 1; tft.println ('+');} hvis (Y> 85 && Y <140) {Serial.println ("Subtraktion"); handling = 2; tft.println ('-');} if (Y> 140 && Y <192) {Serial.println ("Multiplikation"); handling = 3; tft.println ('*');} hvis (Y> 192 && Y <245) {Serial.println ("Devesion"); handling = 4; tft.println ('/');} forsinkelse (300); }} void CalculateResult () {if (action == 1) Number = Num1+Num2; hvis (handling == 2) Tal = Num1-Num2; hvis (handling == 3) Tal = Num1*Num2; hvis (handling == 4) Tal = Num1/Num2; } ugyldig DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // ryd resultatboks tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (SORT); tft.println (tal); // opdater ny værdi} void IntroScreen () {tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor (RØD); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("BEREGNER"); 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, 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 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, SORT);} // 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 [j] ); }}} Efter upload af koden kan du se lommeregneren køre i din skærm som min, og nu kan du udføre grundlæggende matematikberegninger på dette. Så sjov at lave din egen lommeregner med Arduino UNO.

Anbefalede: