Índice:
- Etapa 1: Coisas que você precisa
- Etapa 2: Instalando a Biblioteca de Display TFT no Arduino IDE
- Etapa 3: faça upload do código da calculadora
Vídeo: Calculadora da tela de toque Arduino TFT LCD: 3 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
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
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
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
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:
Macintosh com tela sensível ao toque - Mac clássico com um iPad Mini para a tela: 5 etapas (com fotos)
Macintosh com tela sensível ao toque | Mac clássico com um iPad Mini para a tela: Esta é a minha atualização e design revisado sobre como substituir a tela de um Macintosh vintage por um iPad mini. Este é o sexto destes que fiz ao longo dos anos e estou muito feliz com a evolução e o design deste! Em 2013, quando fiz
Gire a tela e a tela sensível ao toque do Raspberry Pi: 4 etapas
Rotate Raspberry Pi Display and Touchscreen: Este é um instrutível básico para mostrar a você como girar o display e a entrada da tela de toque para qualquer Raspberry Pi executando o sistema operacional Buster Raspbian, mas eu usei esse método desde Jessie. As imagens usadas aqui são de um Raspberry Pi
Calculadora da tela de toque Arduino: 7 etapas
Calculadora da tela de toque do Arduino: Olá! Este é um projeto para fazer uma calculadora touchscreen usando um Arduino Uno e um escudo TFT LCD. Eu vim com o conceito para minha aula de programação de ensino doméstico, e a experiência na construção deste projeto foi muito interessante. Esta calculadora ca
Três circuitos de sensor de toque + circuito de temporizador de toque: 4 etapas
Três circuitos do sensor de toque + circuito do temporizador de toque: o sensor de toque é um circuito que liga quando detecta o toque nos pinos de toque. Ele funciona em uma base transitória, ou seja, a carga estará LIGADA apenas enquanto o toque for feito nos pinos. Aqui, vou mostrar três maneiras diferentes de fazer um toque
Trava da porta da tela de toque Arduino TFT: 5 etapas
Arduino TFT Touchscreen Door Lock: Este é meu primeiro Instructable. Este projeto usa Arduino e um 2.8 " Tela sensível ao toque TFT com um esboço de senha para ativar um relé que interrompe o circuito de uma porta da fechadura magnética. Em segundo plano, a fechadura RFID de uma porta do trabalho quebrou em vez de religar o