- Materiais requisitados:
- Conhecendo o Módulo de Tela TFT LCD:
- Calibrando a tela LCD TFT para tela de toque:
- Conexões TFT LCD com Arduino:
- Programando seu Arduino para TFT LCD:
- Trabalhando:
O Arduino sempre ajudou a construir projetos facilmente e torná-los mais atraentes. Programar uma tela LCD com a opção de tela de toque pode parecer uma tarefa complicada, mas as bibliotecas e escudos do Arduino tornaram isso muito fácil. Neste projeto, usaremos uma tela Arduino TFT LCD de 2,4 ” para construir nossa própria calculadora de tela de toque Arduino que pode realizar todos os cálculos básicos, como adição, subtração, divisão e multiplicação.
Materiais requisitados:
- Arduino Uno
- Tela LCD TFT de 2,4 ”com escudo
- Bateria 9V.
Conhecendo o Módulo de Tela TFT LCD:
Antes de realmente mergulharmos no projeto, é importante saber como este Módulo LCD TFT de 2,4 ” funciona e quais são os tipos presentes nele. Vamos dar uma olhada nas pinagens deste módulo de tela LCD TFT de 2,4 ”.
Como você pode ver, existem 28 pinos que se encaixam perfeitamente em qualquer Arduino Uno / Arduino Mega Board. Uma pequena classificação desses pinos é fornecida na tabela abaixo.
Como você pode ver, os pinos podem ser classificados em quatro classificações principais, como pinos de comando de LCD, pinos de dados de LCD, pinos de cartão SD e pinos de alimentação. Não precisamos saber muito sobre o funcionamento detalhado desses pinos, pois eles serão atendidos por nossa biblioteca Arduino.
Você também pode encontrar um slot de cartão SD na parte inferior do módulo mostrado acima, que pode ser usado para carregar um cartão SD com arquivos de imagem bmp, e essas imagens podem ser exibidas em nossa tela LCD TFT usando o programa Arduino.
Outra coisa importante a se notar é o IC da interface. Existem muitos tipos de módulos TFT disponíveis no mercado, desde o módulo LCD TFT Adafruit original até clones chineses baratos. Um programa que funciona perfeitamente para o seu escudo Adafruit pode não funcionar da mesma forma para as placas breakout chinesas. Portanto, é muito importante saber quais tipos de display LCD você está segurando. Este detalhe deve ser obtido com o fornecedor. Se você está tendo um clone barato como o meu, provavelmente ele está usando o IC do driver ili9341. Você pode seguir este tutorial de interface de LCD TFT com Arduino para experimentar alguns programas de exemplo básicos e se familiarizar com a tela LCD. Verifique também nossos outros projetos de LCD TFT com Arduino aqui:
- Como usar a fita LED NeoPixel com Arduino e LCD TFT
- Bloqueio de código digital controlado por telefone inteligente usando Arduino
Calibrando a tela LCD TFT para tela de toque:
Se você planeja usar a função de tela sensível ao toque do módulo TFT LCD, deverá calibrá-lo para que funcione corretamente. Uma tela LCD sem calibração pode funcionar improvável, por exemplo, você pode tocar em um lugar e o TFT pode responder a um toque em outro lugar. Os resultados dessas calibrações não serão semelhantes para todas as placas e, portanto, você é deixado por sua própria conta para fazer isso.
A melhor maneira de calibrar é usar o programa de exemplo de calibração (vem com a biblioteca) ou usar o monitor serial para detectar seu erro. No entanto, para este projeto, uma vez que o tamanho dos botões é grande, a calibração não deve ser um grande problema e também explicarei como você pode calibrar sua tela na seção de programação abaixo.
Conexões TFT LCD com Arduino:
A tela LCD TFT de 2,4 ”é um escudo Arduino perfeito. Você pode empurrar a tela LCD diretamente para cima do Arduino Uno e ela se encaixará perfeitamente com os pinos e deslizará para dentro. No entanto, por questões de segurança, cubra o terminal de programação de seu Arduino UNO com uma pequena fita isolante, apenas no caso de o terminal entrar em contato com sua tela LCD TFT. O LCD montado no UNO será parecido com este abaixo.
Programando seu Arduino para TFT LCD:
Estamos usando a biblioteca SPFD5408 para fazer esse código da calculadora do Arduino funcionar. Esta é uma biblioteca modificada de Adafruit e pode funcionar perfeitamente com nosso Módulo TFT LCD. Você pode conferir o programa completo no final deste artigo.
Nota: é muito importante para você instalar esta biblioteca em seu IDE Arduino 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 IDE Arduino 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, se for bem-sucedido. Um guia detalhado para fazer o mesmo é fornecido no Tutorial de interface.
Agora, você pode usar o código abaixo em seu IDE Arduino e carregá-lo em seu Arduino UNO para que a calculadora da tela de toque funcione. Mais adiante, expliquei o código em pequenos segmentos.
Precisamos de três bibliotecas para que este programa funcione; todas essas três bibliotecas foram fornecidas no arquivo ZIP que você baixou do link fornecido acima. Eu simplesmente os incluí no código conforme mostrado abaixo.
#incluir
Como dissemos antes, precisamos calibrar a tela LCD para que funcione conforme o esperado, mas não se preocupe, os valores fornecidos aqui são quase universais. As variáveis TS_MINX, TS_MINY, TS_MAXX e TS_MAXY decidem a calibração da Tela. Você pode brincar com eles se achar que a calibração não é satisfatória.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
Como sabemos, a tela LCD TFT pode exibir muitas cores, todas essas cores devem ser inseridas em valores hexadecimais. Para torná-lo mais legível, atribuímos esses valores a uma variável conforme mostrado abaixo.
#define BRANCO 0x0000 // Preto-> Branco #define AMARELO 0x001F // Azul-> Amarelo #define CIANO 0xF800 // Vermelho-> Ciano #define PINK 0x07E0 // Verde-> Rosa #define VERMELHO 0x07FF // Ciano -> Vermelho #define VERDE 0xF81F // Rosa -> Verde #define AZUL 0xFFE0 // Amarelo-> Azul #define PRETO 0xFFFF // Branco-> Preto
Ok, agora podemos entrar na parte de programação. Existem três seções envolvidas neste programa. Um deles é a criação da IU de uma calculadora com botões e visor. Em seguida, detectando os botões com base no toque do usuário e, finalmente, calculando os resultados e exibindo-os. Vamos examiná-los um por um.
1. Criação de uma IU da calculadora:
É aqui que você pode usar muita criatividade para projetar a interface do usuário da calculadora. Eu simplesmente fiz um layout básico de uma calculadora com 16 botões e uma unidade de exibição. Você tem que construir o design da mesma forma que vai desenhar algo na pintura MS. As bibliotecas adicionadas permitirão que você desenhe linhas, retângulo, círculos, caracteres, cordas e muito mais de qualquer cor preferida. Você pode entender as funções disponíveis neste artigo.
Usei as habilidades de desenho de linha e caixa para projetar uma IU que se parece muito com a calculadora dos anos 90. Cada caixa tem largura e altura de 60 pixels.
// 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, GREEN); 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);
2. Detectando os botões:
Outra tarefa desafiadora é detectar o toque do usuário. Cada vez que o usuário toca em algum lugar, podemos ver onde estão as posições X e Y do pixel que ele tocou. Este valor pode ser exibido no monitor serial usando o println conforme mostrado abaixo.
TSPoint p = waitTouch (); X = py; Y = px; Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y);
Pois desenhamos a caixa com largura e altura de 60 pixels cada e temos quatro Linhas e para colunas a partir de (0,0). A posição de cada caixa pode ser prevista conforme mostrado na imagem abaixo.
Mas, na prática, esse não será o resultado. Haverá uma grande diferença entre o valor esperado e o valor real, devido ao problema de calibração.
Assim, para prever a posição exata da caixa, deve-se clicar na linha e verificar sua posição correspondente no monitor serial. Esta pode não ser a maneira mais profissional de fazer isso, mas ainda funciona perfeitamente. Medi a posição de todas as linhas e obtive os valores abaixo.
Agora, já que sabemos a posição de todas as caixas. Quando um usuário toca em qualquer lugar, podemos prever onde ele tocou, comparando seus valores (X, Y) com o valor de cada caixa, conforme mostrado abaixo.
if (X <105 && X> 50) // 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}
3. Exibindo Números e Calculando o Resultado:
A etapa final é calcular o resultado e exibi-los na tela LCD TFT. Esta calculadora Arduino pode realizar operações com apenas 2 números. Esses dois números são nomeados como variáveis “Num1” e “Num2”. A variável “Número” fornece e obtém valor de Num1 e Num2 e também carrega o resultado.
Quando um usuário pressiona um botão, um dígito é adicionado ao número. Quando outro botão é pressionado, o dígito anterior é multiplicado por 10 e o novo número é adicionado com ele. Por exemplo, se pressionarmos 8 e, em seguida, pressionarmos 5 e, em seguida, pressionarmos 7. Então primeiro a variável manterá 8, então (8 * 10) + 5 = 85, então (85 * 10) +7 = 857. Então, finalmente a variável terá o valor 857 com ele.
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; // pressionado novamente}
Quando realizamos qualquer operação como adição, quando o usuário pressiona o botão de adição, o valor do Número será transferido para Num1 e o Número será zerado para que fique pronto para receber a entrada do segundo número.
Ao pressionar Igualdade o valor em Número será enviado para Num2 e então o respectivo cálculo (neste caso a adição) será feito e o resultado será novamente armazenado na variável “Número”.
Por fim, este valor será exibido na tela LCD.
Trabalhando:
O funcionamento desta calculadora da tela de toque do Arduino é simples. Você deve fazer o upload do código fornecido abaixo em seu Arduino e iniciá-lo. Você obtém a calculadora exibida na tela LCD.
Agora, você pode inserir qualquer número e realizar seus cálculos. Ele está limitado a apenas dois operandos e apenas um operador por enquanto. Mas, você pode ajustar o código para que ele tenha muitas opções.
Você tem que pressionar “C” para limpar o valor na tela todas as vezes após realizar um cálculo. Espero que você tenha entendido o projeto e gostado de construir algo semelhante. Se você tiver alguma dúvida, fique à vontade para postá-la nos fóruns ou na seção de comentários abaixo. Até a próxima com outro projeto interessante até então feliz computação !!
Verifique também o vídeo de demonstração abaixo.