Cuprins:

Calculator cu ecran tactil LCD Arduino TFT: 3 pași
Calculator cu ecran tactil LCD Arduino TFT: 3 pași

Video: Calculator cu ecran tactil LCD Arduino TFT: 3 pași

Video: Calculator cu ecran tactil LCD Arduino TFT: 3 pași
Video: TFT Display and Arduino: Setup and Programming | How to connect LCD to arduino 1.8" 2.8" 3.5" 2024, Iulie
Anonim
Calculator cu ecran tactil LCD Arduino TFT
Calculator cu ecran tactil LCD Arduino TFT

Bună, băieți, în acest instructable vom învăța cum să facem un calculator folosind Arduino Uno cu ecran tactil LCD TFT de 3,5 . Deci vom scrie un cod și îl vom încărca în arduino, care va afișa interfața calculatorului pe ecran și va prelua funcționalitatea tactilă și da rezultatul expresiilor matematice de bază.

Pasul 1: Lucruri de care aveți nevoie

Lucruri de care ai nevoie
Lucruri de care ai nevoie
Lucruri de care ai nevoie
Lucruri de care ai nevoie

Pentru acest proiect veți avea nevoie de următoarele lucruri: 3.5 TFT LCD DISPLAYARDUINO UNO

Pasul 2: Instalarea TFT Display Library în Arduino IDE

Instalarea TFT Display Library în Arduino IDE
Instalarea TFT Display Library în Arduino IDE

Folosim biblioteca SPFD5408:

pentru ca acest cod de calculator arduino să funcționeze. Aceasta este o bibliotecă modificată a Adafruit și poate funcționa perfect cu modulul nostru LCD TFT. Este foarte important pentru dvs. să instalați această bibliotecă în Arduino IDE sau în acest program pentru a compila fără nicio eroare. Pentru a instala această bibliotecă, puteți pur și simplu să faceți clic pe linkul de mai sus, care vă va duce la o pagină Github. Acolo faceți clic pe clonare sau descărcare și selectați „Descărcați ZIP”. Va fi descărcat un fișier zip. Acum, deschideți Arduino IDE și selectați Sketch -> Include Librarey -> Add. ZIP library. Se va deschide o fereastră de browser navigați la fișierul ZIP și faceți clic pe „OK”. Ar trebui să observați „Biblioteca adăugată bibliotecilor dvs.” în colțul din stânga jos al Arduino.

Pasul 3: Încărcați codul calculatorului

Încărcați codul calculatorului
Încărcați codul calculatorului
Încărcați codul calculatorului
Încărcați codul calculatorului

După instalarea bibliotecii, conectați afișajul la Arduino și copiați următorul cod și încărcați-l în Arduino. biblioteca # include „SPFD5408_TouchScreen.h” / * _ Sfârșitul bibliotecilor _ * // * _ Definiți pinii LCD (am atribuit valorile implicite) _ * / # definiți YP A1 // trebuie să fie un pin analogic, utilizați notația „O”! # define XM A2 // trebuie să fie un pin analogic, utilizați notația „An”! #define YM 7 // poate fi un pin digital # define XP 6 // poate fi un pin digital # define LCD_CS A3 # define LCD_CD A2 # define LCD_WR A1 # define LCD_RD A0 # define LCD_RESET A4 / * _ Sfârșitul defanițiilor _ * // * _ Atribuie nume culorilor și presiunii _ * / # define WHITE 0x0000 // Black-> White # define YELLOW 0x001F // Blue-> Yellow # define CYAN 0xF800 // Roșu-> Cyan # define PINK 0x07E0 // Verde-> Roz # define RED 0x07FF // Cyan -> Roșu # define VERDE 0xF81F // Roz -> Verde #define ALBASTRU 0xFFE0 // Galben- > Albastru # define NEGRU 0xFFFF // Alb-> Negru # define MINPRESSURE 10 # define MAXPRESSURE 1000 / * _ Atribuit _ * // * _ Calibrate TFT LCD _ * / # define TS_MINX 125 # define TS_MINY 85 # define TS_MAXX 965 # define TS_MAXY 905 / * _ Sfârșitul calibrării _ * / TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); // 300 este sensibilitateaAdafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Începeți comunicarea cu simbolul LCDString [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; Num1 lung, Num2, Număr; acțiune char; boolean result = false; void setup () {Serial.begin (9600); // Utilizați monitorul serial pentru depanarea tft.reset (); // Resetați întotdeauna la start tft.begin (0x9341); // LCD-ul meu utilizează IC-ul driverului de interfață LIL9341 tft.setRotation (2); // Tocmai am plecat astfel încât mufa de alimentare să fie orientată în sus - opțional 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 (); delay (300);} TSPoint waitTouch () {TSPoint p; faceți {p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); } while ((p.z MAXPRESSURE)); p.x = hartă (p.x, TS_MINX, TS_MAXX, 0, 320); p.y = hartă (p.y, TS_MINY, TS_MAXY, 0, 240);; return p;} void DetectButtons () {if (X0) // Detectarea butoanelor de pe coloana 1 {if (Y> 0 && Y <85) // Dacă butonul Cancel este apăsat {Serial.println ("Buton Cancel"); Număr = Num1 = Num2 = 0; result = false;} if (Y> 85 && Y <140) // Dacă butonul 1 este apăsat {Serial.println ("Butonul 1"); if (Număr == 0) Număr = 1; else Number = (Number * 10) + 1; // Apăsat de două ori} if (Y> 140 && Y <192) // Dacă butonul 4 este apăsat {Serial.println („Butonul 4”); if (Număr == 0) Număr = 4; else Number = (Number * 10) + 4; // Apăsat de două ori} if (Y> 192 && Y <245) // Dacă butonul 7 este apăsat {Serial.println („Butonul 7”); if (Număr == 0) Număr = 7; else Number = (Număr * 10) + 7; // Apăsat de două ori}} if (X50) // Detectarea butoanelor de pe coloana 2 {if (Y> 0 && Y <85) {Serial.println („Butonul 0”); // Butonul 0 este apăsat dacă (Număr == 0) Număr = 0; else Number = (Number * 10) + 0; // Apăsat de două ori} if (Y> 85 && Y <140) {Serial.println ("Butonul 2"); if (Număr == 0) Număr = 2; else Number = (Număr * 10) + 2; // Apăsat de două ori} if (Y> 140 && Y <192) {Serial.println ("Butonul 5"); if (Număr == 0) Număr = 5; else Number = (Number * 10) + 5; // Apăsat twic} if (Y> 192 && Y <245) {Serial.println ("Butonul 8"); if (Număr == 0) Număr = 8; else Number = (Number * 10) + 8; // Twic apăsat}} if (X105) // Detectarea butoanelor de pe coloana 3 {if (Y> 0 && Y <85) {Serial.println ("Buton egal"); Num2 = Număr; rezultat = adevărat; } if (Y> 85 && Y <140) {Serial.println ("Butonul 3"); if (Număr == 0) Număr = 3; else Number = (Number * 10) + 3; // Apăsat de două ori} if (Y> 140 && Y <192) {Serial.println ("Butonul 6"); if (Număr == 0) Număr = 6; else Number = (Number * 10) + 6; // Apăsat de două ori} if (Y> 192 && Y <245) {Serial.println ("Butonul 9"); if (Număr == 0) Număr = 9; else Number = (Number * 10) + 9; // Apăsat de două ori}} if (X165) // Butoane de detectare pe coloana 3 {Num1 = Număr; Număr = 0; tft.setCursor (200, 20); tft.setTextColor (RED); if (Y> 0 && Y <85) {Serial.println ("Adăugare"); actiune = 1; tft.println ('+');} if (Y> 85 && Y <140) {Serial.println ("Subtraction"); actiune = 2; tft.println ('-');} if (Y> 140 && Y <192) {Serial.println ("Multiplicare"); actiune = 3; tft.println ('*');} if (Y> 192 && Y <245) {Serial.println ("Devesion"); actiune = 4; tft.println ('/');} întârziere (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); // ștergeți caseta de rezultate tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (NEGRU); tft.println (Număr); // actualizați valoarea nouă} void IntroScreen () {tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor (RED); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("CALCULATOR"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (ALBASTRU); tft.println ("- Circut Digest"); delay (1800);} void draw_BoxNButtons () {// Desenează caseta de rezultate tft.fillRect (0, 0, 240, 80, CYAN); // Desenați prima coloană tft.fillRect (0, 260, 60, 60, RED); tft.fillRect (0, 200, 60, 60, NEGRU); tft.fillRect (0, 140, 60, 60, NEGRU); tft.fillRect (0, 80, 60, 60, NEGRU); // Desenați a treia coloană tft.fillRect (120, 260, 60, 60, VERDE); tft.fillRect (120, 200, 60, 60, NEGRU); tft.fillRect (120, 140, 60, 60, NEGRU); tft.fillRect (120, 80, 60, 60, NEGRU); // Desenați coloana secundară și a patra pentru (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60, 60, BLUE); tft.fillRect (60, b, 60, 60, BLACK);} // Desenați linii orizontale pentru (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Desenați linii verticale pentru (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, WHITE); // Afișați tastele pentru (int j = 0; j <4; j ++) {pentru (int i = 0; i <4; i ++) {tft.setCursor (22 + (60 * i), 100 + (60 * j)); tft.setTextSize (3); tft.setTextColor (ALB); tft.println (simbol [j] ); }}} După încărcarea codului, veți putea vedea calculatorul care rulează pe ecranul dvs. ca al meu și acum puteți efectua calcule matematice de bază în acest sens. Deci, distrează-te făcând propriul tău calculator cu Arduino UNO.

Recomandat: