Pantalla TFT invertida (modo espejo) - solución del problema

1. Introducción del problema:

Normalmente con este tipo de pantallas, suelen haber incompatibilidades con según que librerías ya que hay que ajustarlas según su controlador. 

Un problema común en la pantalla Shield LCD TFT 2.4 pulgadas 240x320 SPI es que las imágenes a mostrar salen invertidas, por tanto el formato horizontal y vertical es correcto, pero en modo espejo. Para verificar el correcto funcionamiento de una pantalla se suele cargar un primer sketch de testeo. En este caso vemos como se muestran algunas de las gráficas del sketch “graphictest_kbv” en el cual podemos observar como las palabras salen “del revés” de modo que no se pueden leer. 

Ejemplos del problema con visión espeja

   

a) Descripción del problema

Como se puede observar, la pantalla no tiene ningún fallo en cuanto a conexión, color o táctil. El problema está en que debemos adaptar la librería para el controlador de este display, en nuestro caso el ILI9341.  

b) Instalación librerías

Para el uso de esta pantalla recomendamos la librería MCUFRIEND_kbv, en la que hemos adaptado el código para resolver el problema del modo espejo. Puedes descargar la última versión en este enlace

  • Una vez descargada, debes como siempre instalarla: 
  • Programa>Incluir Librería>Añadir biblioteca .ZIP..

  • Seleccionamos la librería MCUFRIEND y le damos a abrir:

  • En el Arduino IDE nos debe aparecer un mensaje de confirmación. Algunas veces, también puede aparecer un mensaje que la Librería con nombre MCUFRIEND_kbv-2.9.9-Release ya existe, porque la librería que intentas añadir ya fue instalada en la carpeta donde Arduino las guarda.

2. Solución del problema:

Una vez haya sido incluida, para su adaptación a nuestra pantalla se ha modificado el archivo MCUFRIEND_kbv.cpp. Entonces nos vamos a la carpeta donde está contenida, normalmente en la carpeta Documentos/Arduino/libraries/MCUFRIEND_kbv-2.9.9-Release y abrimos el archivo “MCUFRIEND_kbv.cpp” con el Wordpad, bloc de notas o similar. Viendo como se invierten las palabras el problema está en que aparecen al revés en el lado largo de la pantalla. En esta librería está asignado como GS (long side) y SS (short side) los lados de la pantalla. Nuestro display usa el controlador SPFD5408, por lo que en el código podemos buscar 5408 para ver el “caso” que nos afecta.

Para ello, una vez abierto buscamos las siguientes líneas:

 case 0x5408:

       _lcd_capable = 0 | REV_SCREEN | READ_BGR;

       goto common_9320;

Como hemos dicho, nos afecta al lado largo de la pantalla, por lo que añadimos después de READ_BGR, el comando “ | INVERT_GS “ de modo que nos quede:

Guardamos el archivo y lo cerramos. Y con esto, ya podemos cargar cualquier ejemplo para comprobar que la pantalla ya funciona correctamente.

Cargando el mismo sketch (“graphictest_kbv”), podemos observar su correcto funcionamiento.

 Funcionamiento corecto

Artículos relacionados

Share