Índice:

Calculadora da tela de toque Arduino TFT LCD: 3 etapas
Calculadora da tela de toque Arduino TFT LCD: 3 etapas

Vídeo: Calculadora da tela de toque Arduino TFT LCD: 3 etapas

Vídeo: Calculadora da tela de toque Arduino TFT LCD: 3 etapas
Vídeo: Arduino Calculator (using 2.4" TFT LCD) || VIKRAM TECH 2024, Julho
Anonim
Calculadora Arduino TFT LCD Touchscreen
Calculadora Arduino TFT LCD Touchscreen

Oi pessoal, neste instructables vamos aprender como fazer uma calculadora usando Arduino Uno com display TFT LCD Touchscreen de 3,5 . Então, vamos escrever um código e carregá-lo para o arduino que exibirá a interface da calculadora no display e terá a funcionalidade de toque e dar a saída de expressões matemáticas básicas.

Etapa 1: Coisas que você precisa

Coisas que você precisa
Coisas que você precisa
Coisas que você precisa
Coisas que você precisa

Para este projeto, você precisará dos seguintes itens: 3.5 TFT LCD DISPLAYARDUINO UNO

Etapa 2: Instalando a Biblioteca de Display TFT no Arduino IDE

Instalando a Biblioteca de Display TFT no Arduino IDE
Instalando a Biblioteca de Display TFT no Arduino IDE

Estamos usando a biblioteca SPFD5408:

para fazer o código da calculadora do Arduino funcionar. Esta é uma biblioteca modificada de Adafruit e pode funcionar perfeitamente com nosso Módulo LCD TFT. É muito importante que você instale esta biblioteca em seu Arduino IDE ou este programa para compilar sem nenhum erro. Para instalar esta biblioteca, você pode simplesmente clicar no link acima que o levará a uma página do Github. Clique em clonar ou baixar e selecione “Baixar ZIP”. Um arquivo zip será baixado. Agora, abra o Arduino IDE e selecione Sketch -> Incluir Librarey -> Adicionar biblioteca. ZIP. Uma janela do navegador será aberta, navegue até o arquivo ZIP e clique em “OK”. Você deve observar “Biblioteca adicionada às suas bibliotecas” no canto inferior esquerdo do Arduino.

Etapa 3: faça upload do código da calculadora

Faça upload do código da calculadora
Faça upload do código da calculadora
Faça upload do código da calculadora
Faça upload do código da calculadora

Depois de instalar a biblioteca, conecte o monitor ao Arduino e copie o código a seguir e carregue-o no Arduino./*_Import Libraries _ * / # include "SPFD5408_Adafruit_GFX.h" // Biblioteca gráfica do núcleo # include "SPFD5408_Adafruit_TFTLCD.h" // Hardware-specific library # include "SPFD5408_TouchScreen.h" / * _ Fim das Bibliotecas _ * // * _ Defina os pinos de LCD (atribuí os valores padrão) _ * / # define YP A1 // deve ser um pino analógico, use a notação "An"! # define XM A2 // deve ser um pino analógico, use a notação "An"! #define YM 7 // pode ser um pino digital # define XP 6 // pode ser um pino digital # define LCD_CS A3 # define LCD_CD A2 # define LCD_WR A1 # define LCD_RD A0 # define LCD_RESET A4 / * _ Fim das defanições _ * // * _ Atribui nomes às cores e pressão _ * / # define WHITE 0x0000 // Black-> White # define YELLOW 0x001F // Blue-> Yellow # define CYAN 0xF800 // Vermelho-> Ciano # define ROSA 0x07E0 // Verde-> Rosa # define VERMELHO 0x07FF // Ciano -> Vermelho # define VERDE 0xF81F // Rosa -> Verde # define AZUL 0xFFE0 // Amarelo- > Azul # define BLACK 0xFFFF // Branco-> Preto # define MINPRESSURE 10 # define MAXPRESSURE 1000 / * _ Atribuído _ * // * _ Calibrar TFT LCD _ * / # define TS_MINX 125 # define TS_MINY 85 # define TS_MAXX 965 # define TS_MAXY 905 / * _Fim da calibração _ * / TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); // 300 é a sensibilidadeAdafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Inicie a comunicação com o símbolo LCDString [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; longo Num1, Num2, Número; ação char; resultado booleano = falso; configuração vazia () {Serial.begin (9600); // Use o monitor serial para depuração tft.reset (); // Sempre zera no início tft.begin (0x9341); // Meu LCD usa o driver de interface LIL9341 IC tft.setRotation (2); // Acabei de rodar de modo que a tomada de força fique voltada para cima - opcional tft.fillScreen (BRANCO); IntroScreen (); draw_BoxNButtons (); } loop void () {TSPoint p = waitTouch (); X = p.y; Y = p.x; // Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y); DetectButtons (); if (resultado == true) CalculateResult (); DisplayResult (); atraso (300);} TSPoint waitTouch () {TSPoint p; faça {p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); } 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) // Botões de detecção na coluna 1 {if (Y> 0 && Y <85) // Se o botão de cancelamento for pressionado {Serial.println ("Botão Cancelar"); Número = Num1 = Num2 = 0; resultado = falso;} if (Y> 85 && Y <140) // Se o botão 1 for pressionado {Serial.println ("Botão 1"); if (Número == 0) Número = 1; senão Número = (Número * 10) + 1; // pressionado duas vezes} if (Y> 140 && Y <192) // Se o botão 4 for pressionado {Serial.println ("Botão 4"); if (Número == 0) Número = 4; senão Número = (Número * 10) + 4; // Pressionado duas vezes} if (Y> 192 && Y <245) // Se o Botão 7 for pressionado {Serial.println ("Botão 7"); if (Número == 0) Número = 7; senão Número = (Número * 10) + 7; // Pressionado duas vezes}} if (X50) // Botões de detecção na coluna 2 {if (Y> 0 && Y <85) {Serial.println ("Botão 0"); // Botão 0 é pressionado if (Number == 0) Number = 0; senão Número = (Número * 10) + 0; // Pressionado duas vezes} if (Y> 85 && Y <140) {Serial.println ("Botão 2"); if (Número == 0) Número = 2; senão Número = (Número * 10) + 2; // Pressionado duas vezes} if (Y> 140 && Y <192) {Serial.println ("Botão 5"); if (Número == 0) Número = 5; senão Número = (Número * 10) + 5; // Twic pressionado} if (Y> 192 && Y <245) {Serial.println ("Botão 8"); if (Número == 0) Número = 8; senão Número = (Número * 10) + 8; // Twic pressionado}} if (X105) // Botões de detecção na coluna 3 {if (Y> 0 && Y <85) {Serial.println ("Botão igual"); Num2 = número; resultado = verdadeiro; } if (Y> 85 && Y <140) {Serial.println ("Botão 3"); if (Número == 0) Número = 3; senão Número = (Número * 10) + 3; // Pressionado duas vezes} if (Y> 140 && Y <192) {Serial.println ("Botão 6"); if (Número == 0) Número = 6; senão Número = (Número * 10) + 6; // Pressionado duas vezes} if (Y> 192 && Y <245) {Serial.println ("Botão 9"); if (Número == 0) Número = 9; senão Número = (Número * 10) + 9; // Pressionado duas vezes}} if (X165) // Botões de detecção na coluna 3 {Num1 = Number; Número = 0; tft.setCursor (200, 20); tft.setTextColor (RED); if (Y> 0 && Y <85) {Serial.println ("Adição"); ação = 1; tft.println ('+');} if (Y> 85 && Y <140) {Serial.println ("Subtração"); ação = 2; tft.println ('-');} if (Y> 140 && Y <192) {Serial.println ("Multiplicação"); ação = 3; tft.println ('*');} if (Y> 192 && Y <245) {Serial.println ("Devesion"); ação = 4; tft.println ('/');} atraso (300); }} void CalculateResult () {if (action == 1) Number = Num1 + Num2; if (ação == 2) Número = Num1-Num2; if (ação == 3) Número = Num1 * Num2; if (ação == 4) Número = Num1 / Num2; } void DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // limpar a caixa de resultados tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (BLACK); tft.println (número); // atualiza o novo valor} void IntroScreen () {tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor (RED); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("CALCULADORA"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (BLUE); tft.println ("- Circut Digest"); delay (1800);} void draw_BoxNButtons () {// Desenhe a caixa de resultados tft.fillRect (0, 0, 240, 80, CYAN); // Desenhe a primeira coluna tft.fillRect (0, 260, 60, 60, RED); tft.fillRect (0, 200, 60, 60, PRETO); tft.fillRect (0, 140, 60, 60, PRETO); tft.fillRect (0, 80, 60, 60, PRETO); // Desenhe a terceira coluna tft.fillRect (120, 260, 60, 60, VERDE); tft.fillRect (120, 200, 60, 60, PRETO); tft.fillRect (120, 140, 60, 60, PRETO); tft.fillRect (120, 80, 60, 60, PRETO); // Desenhe a segunda coluna e a quarta coluna para (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60, 60, AZUL); tft.fillRect (60, b, 60, 60, BLACK);} // Desenhe linhas horizontais para (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Desenhe linhas verticais para (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, BRANCO); // Exibir rótulos do 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 (WHITE); tft.println (símbolo [j] ); }}} Depois de enviar o código, você poderá ver a calculadora em execução em seu visor como minha e agora você pode realizar cálculos matemáticos básicos sobre isso. Portanto, divirta-se fazendo sua própria calculadora com o Arduino UNO.

Recomendado: