Resolvendo Problemas de Touchscreen no Shield LCD TFT 2.4" para Arduino
Componentes e Materiais
| Arduino UNO | 1 |
Sobre o Projeto
Olá, neste tutorial planejei testar diferentes funções do shield LCD TFT, mas encontrei alguns problemas e decidi mostrar algumas soluções primeiro; o tutorial usual sobre este shield virá depois.
Este é o shield que estou usando: tela de 2.4", compatível com Arduino Uno, Leonardo, Duemilanove, Mega... e possui slot para cartão SD que pode ser usado para armazenar imagens BMP e exibi-las.
Conexão

Basta encaixá-lo sobre a placa :D. (não esqueça a fita isolante ao redor da porta USB para que não faça contato com a placa da tela)
Bibliotecas e Códigos
Foi aqui que os problemas começaram para mim. Primeiro, você deve verificar qual biblioteca funcionará para você. Para saber se uma biblioteca funciona, baixe-a e abra o exemplo "graphictest"; ele deve mostrar as diferentes cores e formas como no vídeo do tutorial. Se você tiver uma tela branca, pode ser necessário trocar a biblioteca.
Esta foi a que funcionou para mim: Download aqui
Infelizmente não possuo outra versão do shield para testar com uma biblioteca diferente.

Se funcionar, você pode agora tentar o exemplo "tftpaint" para testar as funções de toque. Se funcionar corretamente, parabéns! Mas como você veio até aqui, provavelmente tem o problema do touchscreen, que ocorre porque os fabricantes continuam mudando a localização dos pinos.
Para isso, abra o exemplo "tftpaint" e faça algumas modificações na linha mostrada abaixo:

Configuração Original
#define YP A1 // deve ser um pino analógico, use notação "An"!
#define XM A2 // deve ser um pino analógico, use notação "An"!
#define YM 7 // pode ser um pino digital
#define XP 6 // pode ser um pino digital
Nova Configuração
#define YP A3 // deve ser um pino analógico, use notação "An"!
#define XM A2 // deve ser um pino analógico, use notação "An"!
#define YM 9 // pode ser um pino digital
#define XP 8 // pode ser um pino digital
Após isso, carregue novamente o código do paint na sua placa, e espero que o touchscreen agora seja detectado. Se funcionar, parabéns! Caso contrário, continue o tutorial.
Se um dos seus eixos estiver invertido, vá à biblioteca do touchscreen e abra-a com um editor adequado.

Vá à linha 159 e descomente-a.

Salve as modificações da biblioteca e carregue o código novamente. Se a função de toque agora estiver completamente invertida, faça algumas outras modificações como mostrado abaixo:

Comece com:
return TSPoint(1023-x, 1023-y, z);
Então faça seus ajustes até que o ponto seja desenhado onde você tocou. Na imagem, estão os valores que funcionaram bem para mim.
Lembre-se: se uma das direções ainda estiver invertida, apenas torne (x) ou (1023-x). Espero que isso funcione para você se tiver o problema.
Código
GitHub
https://github.com/JoaoLopesF/SPFD5408
Esquemáticos
Bem... é um shield

Processo de manufatura
- Como Funcionam Sensores de Toque e Suas Principais Aplicações
- Pré-processador e Macros em C: Dominando #include, #define e Compilação Condicional
- Revitalizando Estratégias de Manutenção: Como Otimização de MP e FMEA Reduzem Falhas Pós‑Reparo
- LCD vs. CRT: Prós, Contras e Qual é Melhor para Você
- Guia Profissional de Animação de Bitmap no Shield TFT Touchscreen ILI9341 2,4″ com Arduino
- Crie Animações e Jogos Envolventes em LCD com Arduino UNO
- Exibir Fotos JPEG e Vídeo RGB565 em Display TFT SPI 2.8" com Arduino Nano
- Como Exibir Imagens em LCD TFT 1.17" com Arduino UNO
- Exibir Imagens BMP do Cartão SD no Shield LCD TFT 2.4″ com Arduino
- Shield TFT 2,8" para Arduino Nano – Display SPI 320×240 de Alto Desempenho