Innehållsförteckning:

Arduino TFT LCD -pekskärmsräknare: 3 steg
Arduino TFT LCD -pekskärmsräknare: 3 steg

Video: Arduino TFT LCD -pekskärmsräknare: 3 steg

Video: Arduino TFT LCD -pekskärmsräknare: 3 steg
Video: ЛУЧШИЙ ЭКРАН ДЛЯ АРДУИНО ARDUINO TFT LCD 1.44 SPI 128Х128 ЗА $3! 2024, November
Anonim
Arduino TFT LCD -pekskärmsräknare
Arduino TFT LCD -pekskärmsräknare

Hej killar i dessa instruktioner lär vi oss hur man gör en miniräknare med Arduino Uno med 3,5 TFT LCD -pekskärm. Så skriver vi en kod och laddar upp den till arduino som visar kalkylatorns gränssnitt på displayen och tar beröringsfunktioner och ge resultatet av grundläggande matematiska uttryck.

Steg 1: Saker du behöver

Saker du behöver
Saker du behöver
Saker du behöver
Saker du behöver

För detta projekt behöver du följande saker: 3,5 TFT LCD DISPLAYARDUINO UNO

Steg 2: Installera TFT -skärmbibliotek i Arduino IDE

Installera TFT -skärmbibliotek i Arduino IDE
Installera TFT -skärmbibliotek i Arduino IDE

Vi använder SPFD5408 -biblioteket:

för att få denna arduino -kalkylatorkod att fungera. Detta är ett modifierat bibliotek av Adafruit och kan fungera sömlöst med vår LCD TFT -modul. Det är mycket viktigt för dig att installera detta bibliotek i ditt Arduino IDE eller detta program för att kompilera utan några fel. För att installera det här biblioteket kan du helt enkelt klicka på länken ovan som tar dig till en Github -sida. Klicka där på klonen eller ladda ner och välj "Ladda ner ZIP". En zip -fil laddas ner. Öppna nu Arduino IDE och välj Sketch -> Include Librarey -> Add. ZIP library. Ett webbläsarfönster öppnas, navigera till ZIP -filen och klicka på "OK". Du bör lägga märke till "Library added to your Libraries" i det nedre vänstra hörnet av Arduino.

Steg 3: Ladda upp räknarkoden

Ladda upp räknarkoden
Ladda upp räknarkoden
Ladda upp räknarkoden
Ladda upp räknarkoden

Efter installation av biblioteket ansluter du bildskärmen till Arduino och kopierar följande kod och laddar upp den till Arduino. bibliotek#inkluderar "SPFD5408_TouchScreen.h"/*_ Bibliotekets slut _*//*_ Definiera LCD -stift (jag har tilldelat standardvärdena) _*/#definiera YP A1 // måste vara en analog pin, använd "En" notation!# definiera XM A2 // måste vara en analog stift, använd "En" notation! #define YM 7 // kan vara en digital stift#definiera XP 6 // kan vara en digital stift#definiera LCD_CS A3#definiera LCD_CD A2#definiera LCD_WR A1#definiera LCD_RD A0#definiera LCD_RESET A4/*_ Slut på definitions _*//*_ Tilldela namn till färger och tryck _*/#definiera VIT 0x0000 // Svart-> Vit#definiera GUL 0x001F // Blå-> Gul#definiera CYAN 0xF800 // Röd-> Cyan#definiera ROSA 0x07E0 // Grön-> Rosa#definiera RÖD 0x07FF // Cyan-> Röd#definiera GRÖN 0xF81F // Rosa-> Grön #define BLÅ 0xFFE0 // Gul- > Blå#definiera SVART 0xFFFF // Vit-> Svart#definiera MINPRESSURE 10#definiera MAXPRESSURE 1000/*_ Tilldelad _*//*_ Kalibrera TFT LCD _*/#definiera TS_MINX 125#definiera TS_MINY 85#definiera TS_MAXX 965#definiera TS_MAXY 905/* _End of Calibration _*/TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); // 300 är känslighetenAdafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Starta kommunikation med LCDString -symbolen [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; långa Num1, Num2, Antal; röding åtgärder; booleskt resultat = falskt; void setup () {Serial.begin (9600); // Använd seriell bildskärm för felsökning av tft.reset (); // Återställ alltid vid start tft.begin (0x9341); // Min LCD använder LIL9341 gränssnittsdrivrutin IC tft.setRotation (2); // Jag ropade precis så att strömuttaget vetter uppåt - valfritt 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 (); fördröjning (300);} TSPoint waitTouch () {TSPoint p; gör {p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); } medan ((s. MAXPRESSURE)); p.x = karta (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 -knappen trycks in {Serial.println ("Button Cancel"); Tal = Num1 = Num2 = 0; resultat = falskt;} om (Y> 85 && Y <140) // Om knapp 1 trycks in {Serial.println ("Knapp 1"); om (Number == 0) Number = 1; annars Antal = (Tal*10) + 1; // Tryckt två gånger} om (Y> 140 && Y <192) // Om knapp 4 trycks in {Serial.println ("knapp 4"); om (Number == 0) Number = 4; annars Antal = (Tal*10) + 4; // Tryckt två gånger} om (Y> 192 && Y <245) // Om knapp 7 trycks ned {Serial.println ("knapp 7"); om (Number == 0) Number = 7; annars Antal = (Tal*10) + 7; // Tryckt två gånger}} if (X50) // Upptäck knappar i kolumn 2 {if (Y> 0 && Y <85) {Serial.println ("Knapp 0"); // Knapp 0 trycks om (Number == 0) Number = 0; annars Antal = (Tal*10) + 0; // Tryckt två gånger} om (Y> 85 && Y <140) {Serial.println ("Knapp 2"); om (Number == 0) Number = 2; annars Antal = (Tal*10) + 2; // Tryckt två gånger} om (Y> 140 && Y <192) {Serial.println ("Knapp 5"); om (Number == 0) Number = 5; annars Antal = (Tal*10) + 5; // Tryckt två gånger om (Y> 192 && Y <245) {Serial.println ("Knapp 8"); om (Number == 0) Number = 8; annars Antal = (Tal*10) + 8; // Tryckt två gånger}} if (X105) // Upptäck knappar på kolumn 3 {if (Y> 0 && Y <85) {Serial.println ("Button Equal"); Num2 = Tal; resultat = sant; } if (Y> 85 && Y <140) {Serial.println ("Knapp 3"); om (Number == 0) Number = 3; annars Antal = (Tal*10) + 3; // Tryckt två gånger} om (Y> 140 && Y <192) {Serial.println ("Knapp 6"); om (Number == 0) Number = 6; annars Antal = (Tal*10) + 6; // Tryckt två gånger} om (Y> 192 && Y <245) {Serial.println ("Knapp 9"); om (Number == 0) Number = 9; annars Antal = (Tal*10) + 9; // Tryckt två gånger}} om (X165) // Upptäck knappar på kolumn 3 {Num1 = Number; Antal = 0; tft.setCursor (200, 20); tft.setTextColor (RÖD); if (Y> 0 && Y <85) {Serial.println ("Tillägg"); åtgärd = 1; tft.println ('+');} if (Y> 85 && Y <140) {Serial.println ("Subtraktion"); åtgärd = 2; tft.println ('-');} if (Y> 140 && Y <192) {Serial.println ("multiplikation"); åtgärd = 3; tft.println ('*');} if (Y> 192 && Y <245) {Serial.println ("Devesion"); åtgärd = 4; tft.println ('/');} fördröjning (300); }} void CalculateResult () {if (action == 1) Number = Num1+Num2; if (action == 2) Number = Num1-Num2; if (action == 3) Number = Num1*Num2; if (action == 4) Number = Num1/Num2; } void DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // rensa resultatrutan tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (SVART); tft.println (antal); // uppdatera nytt värde} 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"); delay (1800);} void draw_BoxNButtons () {// Draw the Result Box tft.fillRect (0, 0, 240, 80, CYAN); // Rita första kolumnen 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); // Rita tredje kolumnen tft.fillRect (120, 260, 60, 60, GRÖN); tft.fillRect (120, 200, 60, 60, SVART); tft.fillRect (120, 140, 60, 60, SVART); tft.fillRect (120, 80, 60, 60, SVART); // Rita sekund och fjärde kolumn för (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60, 60, BLÅ); tft.fillRect (60, b, 60, 60, SVART);} // Rita horisontella linjer för (int h = 80; h <= 320; h+= 60) tft.drawFastHLine (0, h, 240, WHITE); // Rita vertikala linjer för (int v = 0; v <= 240; v+= 60) tft.drawFastVLine (v, 80, 240, WHITE); // Visa tangentbordets etiketter för (int j = 0; j <4; j ++) {för (int i = 0; i <4; i ++) {tft.setCursor (22+(60*i), 100+(60* j)); tft.setTextSize (3); tft.setTextColor (VIT); tft.println (symbol [j] ); }}} Efter att du har laddat upp koden kan du se miniräknaren köra på din skärm som min och nu kan du utföra grundläggande matematiska beräkningar på detta. Så ha kul att göra din egen miniräknare med Arduino UNO.

Rekommenderad: