Tabla de contenido:

Calculadora de pantalla táctil Arduino TFT LCD: 3 pasos
Calculadora de pantalla táctil Arduino TFT LCD: 3 pasos

Video: Calculadora de pantalla táctil Arduino TFT LCD: 3 pasos

Video: Calculadora de pantalla táctil Arduino TFT LCD: 3 pasos
Video: Tutorial Arduino: Pantalla táctil LCD TFT 2.4" ILI9341 Touch - circuito y código 2024, Noviembre
Anonim
Calculadora de pantalla táctil Arduino TFT LCD
Calculadora de pantalla táctil Arduino TFT LCD

Hola chicos, en este instructables aprenderemos cómo hacer una calculadora usando Arduino Uno con pantalla táctil TFT LCD de 3.5 . Entonces escribiremos un código y lo subiremos a arduino que mostrará la interfaz de la calculadora en la pantalla y tomará la funcionalidad táctil y dar la salida de expresiones matemáticas básicas.

Paso 1: Cosas que necesita

Cosas que necesitas
Cosas que necesitas
Cosas que necesitas
Cosas que necesitas

Para este proyecto necesitará lo siguiente: PANTALLA LCD TFT DE 3,5 ARDUINO UNO

Paso 2: Instalación de la biblioteca de pantallas TFT en Arduino IDE

Instalación de la biblioteca de pantallas TFT en Arduino IDE
Instalación de la biblioteca de pantallas TFT en Arduino IDE

Estamos utilizando la biblioteca SPFD5408:

para que este código de calculadora arduino funcione. Esta es una biblioteca modificada de Adafruit y puede funcionar sin problemas con nuestro módulo LCD TFT. Es muy importante que instale esta biblioteca en su IDE de Arduino o este programa para compilar sin ningún error. Para instalar esta biblioteca, simplemente haga clic en el enlace de arriba que lo llevará a una página de Github. Allí haga clic en clonar o descargar y seleccione "Descargar ZIP". Se descargará un archivo zip. Ahora, abra Arduino IDE y seleccione Sketch -> Incluir Librarey -> Agregar biblioteca. ZIP. Se abrirá una ventana del navegador, navegue hasta el archivo ZIP y haga clic en "Aceptar". Debería notar "Biblioteca agregada a sus bibliotecas" en la esquina inferior izquierda de Arduino.

Paso 3: Cargue el código de la calculadora

Cargar el código de la calculadora
Cargar el código de la calculadora
Cargar el código de la calculadora
Cargar el código de la calculadora

Después de instalar la biblioteca, conecte la pantalla a Arduino y copie el siguiente código y cárguelo en Arduino. library # include "SPFD5408_TouchScreen.h" / * _ Fin de las bibliotecas _ * // * _ Definir pines LCD (he asignado los valores predeterminados) _ * / # define YP A1 // debe ser un pin analógico, use la notación "An"! # define XM A2 // debe ser un pin analógico, use la notación "An"! #define YM 7 // puede ser un pin digital # define XP 6 // puede ser un pin digital # define LCD_CS A3 # define LCD_CD A2 # define LCD_WR A1 # define LCD_RD A0 # define LCD_RESET A4 / * _ Fin de defaniciones _ * // * _ Asignar nombres a colores y presión _ * / # define WHITE 0x0000 // Black-> White # define YELLOW 0x001F // Blue-> Yellow # define CYAN 0xF800 // Rojo-> Cian # define PINK 0x07E0 // Verde-> Rosa # define ROJO 0x07FF // Cian -> Rojo # define VERDE 0xF81F // Rosa -> Verde #define AZUL 0xFFE0 // Amarillo- > Azul # define NEGRO 0xFFFF // Blanco-> Negro # define MINPRESSURE 10 # define MAXPRESSURE 1000 / * _ Asignado _ * // * _ Calibrar TFT LCD _ * / # define TS_MINX 125 # define TS_MINY 85 # define TS_MAXX 965 # define TS_MAXY 905 / * _Fin de calibración _ * / TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); // 300 es la sensibilidad Adafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Iniciar la comunicación con el símbolo LCDString [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; long Num1, Num2, Number; acción de char; resultado booleano = falso; void setup () {Serial.begin (9600); // Usa el monitor serial para depurar tft.reset (); // Restablecer siempre al inicio tft.begin (0x9341); // Mi LCD usa el controlador de interfaz LIL9341 IC tft.setRotation (2); // Acabo de girar para que el conector de alimentación quede hacia arriba - opcional tft.fillScreen (WHITE); IntroScreen (); draw_BoxNButtons (); } bucle vacío () {TSPoint p = waitTouch (); X = p.y; Y = p.x; // Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y); DetectButtons (); if (resultado == verdadero) CalculateResult (); DisplayResult (); delay (300);} TSPoint waitTouch () {TSPoint p; hacer {p = ts.getPoint (); pinMode (XM, SALIDA); pinMode (YP, SALIDA); } while ((p.z MAXPRESSURE)); p.x = mapa (p.x, TS_MINX, TS_MAXX, 0, 320); p.y = mapa (p.y, TS_MINY, TS_MAXY, 0, 240);; return p;} void DetectButtons () {if (X0) // Detectando botones en la columna 1 {if (Y> 0 && Y <85) // Si se presiona el botón cancelar {Serial.println ("Botón Cancelar"); Número = Num1 = Num2 = 0; result = false;} if (Y> 85 && Y <140) // Si se presiona el Botón 1 {Serial.println ("Botón 1"); si (Número == 0) Número = 1; más Número = (Número * 10) + 1; // Presionado dos veces} if (Y> 140 && Y <192) // Si se presiona el Botón 4 {Serial.println ("Botón 4"); si (Número == 0) Número = 4; más Número = (Número * 10) + 4; // Presionado dos veces} if (Y> 192 && Y <245) // Si se presiona el Botón 7 {Serial.println ("Botón 7"); si (Número == 0) Número = 7; más Número = (Número * 10) + 7; // Presionado dos veces}} if (X50) // Detectando botones en la Columna 2 {if (Y> 0 && Y <85) {Serial.println ("Botón 0"); // Se presiona el botón 0 si (Número == 0) Número = 0; más Número = (Número * 10) + 0; // Presionado dos veces} if (Y> 85 && Y <140) {Serial.println ("Botón 2"); si (Número == 0) Número = 2; más Número = (Número * 10) + 2; // Presionado dos veces} if (Y> 140 && Y <192) {Serial.println ("Botón 5"); si (Número == 0) Número = 5; más Número = (Número * 10) + 5; // Presionó dos veces} if (Y> 192 && Y <245) {Serial.println ("Botón 8"); si (Número == 0) Número = 8; más Número = (Número * 10) + 8; // Pulsó dos veces}} if (X105) // Detectando botones en la columna 3 {if (Y> 0 && Y <85) {Serial.println ("Botón igual"); Num2 = Número; resultado = verdadero; } si (Y> 85 && Y <140) {Serial.println ("Botón 3"); si (Número == 0) Número = 3; más Número = (Número * 10) + 3; // Presionado dos veces} if (Y> 140 && Y <192) {Serial.println ("Botón 6"); si (Número == 0) Número = 6; más Número = (Número * 10) + 6; // Presionado dos veces} if (Y> 192 && Y <245) {Serial.println ("Botón 9"); si (Número == 0) Número = 9; más Número = (Número * 10) + 9; // Presionado dos veces}} if (X165) // Detectando botones en la columna 3 {Num1 = Number; Número = 0; tft.setCursor (200, 20); tft.setTextColor (ROJO); if (Y> 0 && Y <85) {Serial.println ("Adición"); acción = 1; tft.println ('+');} if (Y> 85 && Y <140) {Serial.println ("Resta"); acción = 2; tft.println ('-');} if (Y> 140 && Y <192) {Serial.println ("Multiplicación"); acción = 3; tft.println ('*');} if (Y> 192 && Y <245) {Serial.println ("Desvío"); acción = 4; tft.println ('/');} retraso (300); }} void CalculateResult () {if (acción == 1) Número = Num1 + Num2; if (acción == 2) Número = Num1-Num2; if (acción == 3) Número = Num1 * Num2; if (acción == 4) Número = Num1 / Num2; } void DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // limpiar el cuadro de resultados tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (NEGRO); tft.println (Número); // actualiza el nuevo valor} void IntroScreen () {tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor (ROJO); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("CALCULADORA"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (AZUL); tft.println ("- Circut Digest"); delay (1800);} void draw_BoxNButtons () {// Dibuja el cuadro de resultado tft.fillRect (0, 0, 240, 80, CYAN); // Dibujar la primera columna tft.fillRect (0, 260, 60, 60, RED); tft.fillRect (0, 200, 60, 60, NEGRO); tft.fillRect (0, 140, 60, 60, NEGRO); tft.fillRect (0, 80, 60, 60, NEGRO); // Dibujar la tercera columna tft.fillRect (120, 260, 60, 60, VERDE); tft.fillRect (120, 200, 60, 60, NEGRO); tft.fillRect (120, 140, 60, 60, NEGRO); tft.fillRect (120, 80, 60, 60, NEGRO); // Dibujar segunda y cuarta columna para (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60, 60, BLUE); tft.fillRect (60, b, 60, 60, NEGRO);} // Dibujar líneas horizontales para (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, BLANCO); // Dibujar líneas verticales para (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, WHITE); // Mostrar las etiquetas del teclado para (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 (BLANCO); tft.println (símbolo [j] ); }}} Después de cargar el código, podrá ver la calculadora ejecutándose en su pantalla como mía y ahora puede realizar cálculos matemáticos básicos sobre esto. Así que diviértete haciendo tu propia calculadora con Arduino UNO.

Recomendado: