Taula de continguts:

Calculadora de pantalla tàctil TFT LCD Arduino: 3 passos
Calculadora de pantalla tàctil TFT LCD Arduino: 3 passos

Vídeo: Calculadora de pantalla tàctil TFT LCD Arduino: 3 passos

Vídeo: Calculadora de pantalla tàctil TFT LCD Arduino: 3 passos
Vídeo: Arduino Touch Calculator with tft lcd 2024, De novembre
Anonim
Calculadora de pantalla tàctil LCD TFT Arduino
Calculadora de pantalla tàctil LCD TFT Arduino

Hola nois, en aquest instructiu, aprendrem a fer una calculadora amb Arduino Uno amb pantalla tàctil TFT LCD de 3,5 . Així, escriurem un codi i el penjarem a arduino, que mostrarà la interfície de la calculadora a la pantalla i tindrà funcionalitat tàctil i donar la sortida d'expressions matemàtiques bàsiques.

Pas 1: coses que necessiteu

Coses que necessiteu
Coses que necessiteu
Coses que necessiteu
Coses que necessiteu

Per a aquest projecte necessitareu els següents aspectes: TFT LCD de 3,5 DISPLAYARDUINO UNO

Pas 2: Instal·lació de la biblioteca de visualització TFT a Arduino IDE

Instal·lació de la biblioteca de visualització TFT a Arduino IDE
Instal·lació de la biblioteca de visualització TFT a Arduino IDE

Estem utilitzant la biblioteca SPFD5408:

perquè aquest codi de la calculadora arduino funcioni. Es tracta d’una biblioteca modificada d’Adafruit i pot funcionar perfectament amb el nostre mòdul LCD TFT. És molt important que instal·leu aquesta biblioteca al vostre IDE Arduino o aquest programa per compilar-lo sense cap error. Per instal·lar aquesta biblioteca, només cal que feu clic a l’enllaç superior que us portarà a una pàgina de Github. Allà feu clic a clona o descarregueu i seleccioneu "Descarregar ZIP". Es descarregarà un fitxer zip. Ara, obriu Arduino IDE i seleccioneu Sketch -> Include Librarey -> Add. ZIP library. S'obrirà una finestra del navegador, aneu al fitxer ZIP i feu clic a "D'acord". Haureu de notar "La biblioteca s'ha afegit a les vostres biblioteques" a l'extrem inferior esquerre d'Arduino.

Pas 3: pengeu el codi de la calculadora

Pengeu el codi de la calculadora
Pengeu el codi de la calculadora
Pengeu el codi de la calculadora
Pengeu el codi de la calculadora

Després d'instal·lar la biblioteca, connecteu la pantalla a Arduino i copieu el codi següent i pengeu-lo a Arduino. biblioteca # inclou "SPFD5408_TouchScreen.h" / * _ Fi de les biblioteques _ * // * _ Definiu pins LCD (he assignat els valors predeterminats) _ * / # defineu YP A1 // ha de ser un pin analògic, utilitzeu la notació "Una"! # defineix XM A2 // ha de ser un pin analògic, utilitza una notació "# define YM 7 // pot ser un pin digital # defineix XP 6 // pot ser un pin digital # defineix LCD_CS A3 # defineix LCD_CD A2 # defineix LCD_WR A1 # defineix LCD_RD A0 # defineix LCD_RESET A4 / * _ Final de defanicions _ * // * _ Assigna noms a colors i pressió _ * / # defineix BLANC 0x0000 // Negre-> Blanc # defineix GROC 0x001F // Blau-> Groc # defineix CIAN 0xF800 // Vermell-> Cian # definir PINK 0x07E0 // Verd-> Rosa # definir VERMELL 0x07FF // Cian -> Vermell # definir VERD 0xF81F // Rosa -> Verd # definir BLAU 0xFFE0 // Groc- > Blau # defineix NEGRE 0xFFFF // Blanc-> Negre # defineix MINPRESSURE 10 # defineix MAXPRESSURE 1000 / * _ Assignat _ * // * _ Calibra TFT LCD _ * / # define TS_MINX 125 # define TS_MINY 85 # define TS_MAXX 965 # define TS_MAXY 905 / * _ Fi de la calibració _ * / Pantalla tàctil ts = Pantalla tàctil (XP, YP, XM, YM, 300); // 300 és la sensibilitat Adafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Inicieu la comunicació amb el símbol LCDString [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; llarg Num1, Num2, Nombre; acció char; resultat booleà = false; void setup () {Serial.begin (9600); // Utilitzeu el monitor sèrie per depurar tft.reset (); // Restableix sempre a l'inici tft.begin (0x9341); // La meva pantalla LCD utilitza el controlador d'interfície LIL9341 IC tft.setRotation (2); // Acabo de desplaçar-me perquè la presa de corrent estigui cap amunt - opcional tft.fillScreen (BLANC); IntroScreen (); draw_BoxNButtons (); } bucle buit () {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; fer {p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); } while ((p.z MAXPRESSURE)); p.x = mapa (p.x, TS_MINX, TS_MAXX, 0, 320); py = mapa (py, TS_MINY, TS_MAXY, 0, 240);; return p;} void DetectButtons () {if (X0) // Detecció de botons a la columna 1 {if (Y> 0 && Y <85) // Si es prem el botó Cancel·la {Serial.println ("Cancel·la el botó"); Nombre = Num1 = Num2 = 0; result = false;} if (Y> 85 && Y <140) // Si es prem el botó 1 {Serial.println ("Botó 1"); if (Nombre == 0) Nombre = 1; else Nombre = (Nombre * 10) + 1; // Es prem dues vegades} if (Y> 140 && Y <192) // Si es prem el botó 4 {Serial.println ("Botó 4"); if (Nombre == 0) Nombre = 4; else Nombre = (Nombre * 10) + 4; // Es prem dues vegades} if (Y> 192 && Y <245) // Si es prem el botó 7 {Serial.println ("Botó 7"); if (Nombre == 0) Nombre = 7; else Nombre = (Nombre * 10) + 7; // Es prem dues vegades}} if (X50) // Detecció de botons a la columna 2 {if (Y> 0 && Y <85) {Serial.println ("Botó 0"); // Es prem el botó 0 si (Nombre == 0) Nombre = 0; else Nombre = (Nombre * 10) + 0; // Es prem dues vegades} if (Y> 85 && Y <140) {Serial.println ("Botó 2"); if (Nombre == 0) Nombre = 2; else Nombre = (Nombre * 10) + 2; // Es prem dues vegades} if (Y> 140 && Y <192) {Serial.println ("Botó 5"); if (Nombre == 0) Nombre = 5; else Nombre = (Nombre * 10) + 5; // Twic premut} if (Y> 192 && Y <245) {Serial.println ("Botó 8"); if (Nombre == 0) Nombre = 8; else Nombre = (Nombre * 10) + 8; // Twic premut}} if (X105) // Detecció de botons a la columna 3 {if (Y> 0 && Y <85) {Serial.println ("Botó igual"); Num2 = Nombre; resultat = cert; } if (Y> 85 && Y <140) {Serial.println ("Botó 3"); if (Nombre == 0) Nombre = 3; else Nombre = (Nombre * 10) + 3; // Es prem dues vegades} if (Y> 140 && Y <192) {Serial.println ("Botó 6"); if (Nombre == 0) Nombre = 6; else Nombre = (Nombre * 10) + 6; // Es prem dues vegades} if (Y> 192 && Y <245) {Serial.println ("Botó 9"); if (Nombre == 0) Nombre = 9; else Nombre = (Nombre * 10) + 9; // Es prem dues vegades}} if (X165) // Detecció de botons a la columna 3 {Num1 = Nombre; Nombre = 0; tft.setCursor (200, 20); tft.setTextColor (VERMELL); if (Y> 0 && Y <85) {Serial.println ("Addició"); acció = 1; tft.println ('+');} if (Y> 85 && Y <140) {Serial.println ("Resta"); acció = 2; tft.println ('-');} if (Y> 140 && Y <192) {Serial.println ("Multiplicació"); acció = 3; tft.println ('*');} if (Y> 192 && Y <245) {Serial.println ("Devesió"); acció = 4; tft.println ('/');} demora (300); }} void CalculateResult () {if (action == 1) Number = Num1 + Num2; if (acció == 2) Nombre = Num1-Num2; if (action == 3) Number = Num1 * Num2; if (acció == 4) Nombre = Num1 / Num2; } void DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // esborra el quadre de resultats tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (NEGRE); tft.println (Nombre); // actualitza el valor nou} void IntroScreen () {tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor (VERMELL); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("CALCULADOR"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (BLAU); tft.println ("- Circut Digest"); delay (1800);} void draw_BoxNButtons () {// Dibuixa el quadre de resultats tft.fillRect (0, 0, 240, 80, CYAN); // Dibuixa la primera columna tft.fillRect (0, 260, 60, 60, VERMELL); tft.fillRect (0, 200, 60, 60, NEGRE); tft.fillRect (0, 140, 60, 60, NEGRE); tft.fillRect (0, 80, 60, 60, NEGRE); // Dibuixa la tercera columna tft.fillRect (120, 260, 60, 60, VERD); tft.fillRect (120, 200, 60, 60, NEGRE); tft.fillRect (120, 140, 60, 60, NEGRE); tft.fillRect (120, 80, 60, 60, NEGRE); // Dibuixa la columna secunda i quarta per a (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60, 60, BLAU); tft.fillRect (60, b, 60, 60, NEGRE);} // Dibuixa línies horitzontals per a (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, BLANC); // Dibuixa línies verticals per a (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, BLANC); // Mostra les funcions del teclat per a (int j = 0; j <4; j ++) {per a (int i = 0; i <4; i ++) {tft.setCursor (22 + (60 * i), 100 + (60 * j)); tft.setTextSize (3); tft.setTextColor (BLANC); tft.println (símbol [j] ); }}} Després de penjar el codi, podreu veure la calculadora funcionant a la pantalla com a meva i ara podeu fer càlculs matemàtics bàsics sobre això. Així que diverteix-te fent la teva pròpia calculadora amb Arduino UNO.

Recomanat: