Problemas com LCD TFT 7783 (778x) + TouchScreen com tela revertida

Problemas com LCD TFT 7783 (778x) + TouchScreen com tela revertida

O universo se abre de possibilidades quando usamos uma tela grande, touch screen, com ótima qualidade de renderização. Quanto maior a tela, maior o custo, fato. Uma tela barata, de fácil acesso e fácil utilização, são as telas com chip 778x. Estas telas são encontradas em forma de shield para Arduíno, como também como parte isolada. Porem, com toda essa facilidade aparecem os problemas. Drivers 7783 em especial, causam um reverso na tela, fazendo com que as libs disponíveis trabalhem de forma inconsistente.

Os shields com telas com drive 778x, na sua maioria, já possuem cartão micro SD, o que torna fácil a ligação e utilização deste equipamento. Com 2.4", regulador 3.3v embutido, resolução 240x320, 18Bits de cor (262K cores), e a preço de aproximadamente R$ 30,00 reais, torna-se um shield de ótimo custo beneficio.

Acontece que pela quantidade de drivers e a quantidade de shields existentes (o que diferencia pela forma que ele foi construído), nem todas as libs funcionam corretamente. Sempre vejo problemas relacionados ao touch deste modelo em questão (modelo 7783 da mcu friend), pois o touch não corresponde ao screen. Acontece que algumas libs tomam como ponto de partida 0x0 pixel com o shield deitado, quando outros tomam como em pé, e assim por diante. Vale lembrar que a posição deste shield é em pé, com os botões touch para baixo:

Partindo deste ponto, a posição X e Y inicial (0x0) é do topo esquerdo. Após alguns testes, notei que cada lib tratava isso de uma forma diferente.

A resposta mais precisa que consegui, foi com a lib TFT-Shield, que é baseada no Adafruit_GFX. A lib do touch, foi usada a TouchScreen, lib mais completa para esta função, com controle de pressão e ótima precisão.

Como disse, a quantidade de hardware e software para telas e touch são enormes, por isso, muita gente teve problemas em executar alguns códigos de exemplo, ja que o touch não respondia de acordo com o esperado.

Conseguimos resolver isso com uma modificação na captura do X e Y do touch:

1 - Mapeamos o X e Y pressionado, com o tamanho da tela:

2 - Invertemos o X para o Y, e Y para o X, pois a lib trabalha horizontalmente, e ja que nossa tela é vertical, precisamos modificar as posições:

Com isso temos a posição X e Y correta.

O código do exemplo completo ficaria assim:

Espero que esta dica ajude a resolverem este problema. Tivemos conhecimento que muitas pessoas até desistiram de testar suas telas, pois não encontravam uma solução para isso.

Deixe seu comentário ai em baixo, para podemos sempre ajudar

Comentários