How do I install the Arduino TFT display library?

Pantallas TFT con Arduino: Librerías Esenciales

06/05/2023

Valoración: 4.59 (13354 votos)

Las pantallas TFT (Thin-Film Transistor) son componentes fascinantes que permiten añadir interfaces gráficas dinámicas y coloridas a tus proyectos de electrónica. Con su capacidad para mostrar imágenes complejas, texto y animaciones, se han convertido en una elección popular para todo tipo de aplicaciones, desde sistemas de monitoreo hasta consolas de juegos portátiles. Para interactuar con estas pantallas desde una placa como Arduino, necesitamos librerías de software que simplifiquen la comunicación y el dibujo. En este artículo, exploraremos dos de las librerías más importantes y ampliamente utilizadas: la librería Adafruit para pantallas TFT y la potente TFT_eSPI.

How do I install the Arduino TFT display library?
To install, use the Arduino Library Manager and search for "Adafruit 2.8" TFT display Library" and install the library. Uh oh! There was an error while loading. Please reload this page. Uh oh! There was an error while loading.

La elección de la librería adecuada depende en gran medida del tipo de pantalla TFT que poseas y del microcontrolador Arduino o compatible que estés utilizando. Cada librería ofrece un conjunto único de características y optimizaciones, diseñadas para diferentes escenarios de uso. Acompáñanos en este recorrido para entender cómo instalar y aprovechar al máximo estas herramientas esenciales.

Índice de Contenido

Instalación de la Librería Adafruit para Pantallas TFT

La librería Adafruit para pantallas TFT está diseñada específicamente para pantallas LCD TFT de 8 bits, como las que utilizan controladores ILI9325, ILI9328, y otros modelos similares. Estas pantallas se comunican con el microcontrolador mediante una interfaz paralela de 8 bits, lo que generalmente requiere entre 12 y 13 pines para su conexión (el pin RST es opcional, pero recomendado para un reinicio fiable de la pantalla).

Adafruit, una empresa líder en hardware de código abierto, invierte una cantidad considerable de tiempo y recursos en la creación y el mantenimiento de este código. Al utilizar sus librerías, no solo te beneficias de un software robusto y bien documentado, sino que también apoyas el desarrollo continuo de hardware y software de código abierto. Esta librería fue escrita por Limor Fried (Ladyada) para Adafruit Industries y se distribuye bajo una licencia BSD, lo que garantiza su libertad de uso y modificación. Todo el texto anterior debe incluirse en cualquier redistribución.

Pasos para la Instalación:

  1. Abre tu IDE de Arduino.
  2. Ve a Sketch > Incluir Librería > Administrar Librerías... (o Herramientas > Administrar Librerías... en versiones más recientes).
  3. En el campo de búsqueda del Administrador de Librerías, escribe "Adafruit 2.8" TFT display Library".
  4. Localiza la librería en los resultados de búsqueda.
  5. Haz clic en Instalar. El IDE de Arduino descargará e instalará automáticamente la librería y sus dependencias (como Adafruit GFX, que es la librería gráfica base).

Una vez instalada, ya puedes comenzar a explorar los ejemplos que vienen con la librería para familiarizarte con sus funciones básicas de dibujo, texto y manejo de colores en tu pantalla TFT de 8 bits.

TFT_eSPI: Una Librería Potente para Procesadores de 32 bits

Mientras que la librería Adafruit es una excelente opción para pantallas de 8 bits y proyectos más sencillos, la librería TFT_eSPI se presenta como una solución mucho más avanzada y optimizada, especialmente diseñada para procesadores de 32 bits. Esta librería es conocida por su alto rendimiento y su rica variedad de características gráficas y de fuentes. Está optimizada para microcontroladores populares como el RP2040 (Raspberry Pi Pico), ESP32 (incluyendo S2, S3, C3), ESP8266 y STM32. Aunque puede usarse con otros procesadores de 32 bits, el rendimiento podría ser menor ya que utilizaría las llamadas genéricas de la interfaz Arduino.

La librería TFT_eSPI es compatible con el Administrador de Librerías del IDE de Arduino, lo que facilita su instalación y actualización. Además, cuenta con una comunidad activa y muchos tutoriales en línea creados por usuarios entusiastas, lo que la convierte en una opción robusta para desarrolladores.

Características Destacadas de TFT_eSPI:

  • Optimización de Velocidad: Ofrece un rendimiento significativamente superior (típicamente de 3 a 10 veces más rápido) en comparación con otras librerías genéricas, gracias a controladores optimizados y el uso de Direct Memory Access (DMA) cuando está disponible.
  • Soporte Extenso de Procesadores:
    • RP2040 (Raspberry Pi Pico)
    • ESP32 (ESP32, ESP32-S2, ESP32-C3, ESP32-S3)
    • ESP8266
    • STM32F1xx, STM32F2xx, STM32F4xx, STM32F767 (se recomiendan procesadores con mayor RAM)
  • Diversidad de Interfaces: Soporta interfaces SPI de 4 hilos, paralelo de 8 bits y paralelo de 16 bits, dependiendo del procesador. Las pantallas SPI de 4 hilos requieren una señal de control de Datos/Comando (DC, RS o A0).
  • Controladores de Pantalla Soportados: Incluye una amplia gama de controladores populares como GC9A01, ILI9163, ILI9225, ILI9341, ILI9342, ILI9481, ILI9486, ILI9488, HX8357B/C/D, R61581, RM68120, RM68140, S6D02A1, SSD1351, SSD1963, ST7735, ST7789 y ST7796. Se recomienda empezar con pantallas basadas en ILI9341 y ST7796 SPI.
  • Configuración Flexible: La configuración de los pines de la pantalla y otras opciones se realiza dentro de la propia librería, en el archivo User_Setup_Select.h, lo que mantiene los sketches (programas) limpios y facilita la ejecución de ejemplos sin modificaciones constantes. Para usuarios de PlatformIO, la configuración puede definirse por proyecto en el archivo platformio.ini.

Instalación de TFT_eSPI:

Al igual que la librería Adafruit, TFT_eSPI se instala fácilmente a través del Administrador de Librerías de Arduino:

  1. Abre tu IDE de Arduino.
  2. Ve a Sketch > Incluir Librería > Administrar Librerías....
  3. En el campo de búsqueda, escribe "TFT_eSPI".
  4. Localiza la librería en los resultados.
  5. Haz clic en Instalar.

Una vez instalada, es crucial configurar el archivo User_Setup_Select.h para que coincida con tu pantalla y pines. Este archivo te permite seleccionar entre varios ejemplos de configuración o crear el tuyo propio.

Funcionalidades Avanzadas de TFT_eSPI:

Sprites: Gráficos sin Parpadeo

Una de las características más potentes de TFT_eSPI es su clase Sprite. Un Sprite es, en esencia, una pantalla gráfica invisible que se mantiene en la RAM del procesador. Puedes dibujar gráficos en el Sprite de la misma manera que lo harías directamente en la pantalla. Una vez que el Sprite está completo, se puede trazar en cualquier posición de la pantalla real. Esto es ideal para actualizaciones de gráficos complejos y animaciones, ya que elimina el parpadeo que a menudo ocurre al dibujar directamente en la pantalla. El dibujo en un Sprite es increíblemente rápido; por ejemplo, la prueba gráfica completa de Adafruit se renderiza en solo 18 ms en un Sprite de 160x128.

What is TFT_screen_capture?
The TFT_Screen_Capture example allows full screens to be captured and sent to a PC, this is handy to create program documentation. The library includes a "Sprite" class, this enables flicker free updates of complex graphics.

Los Sprites pueden usar diferentes profundidades de color (16 bits, 8 bits o 1 bit) para optimizar el uso de la RAM. Por ejemplo, un Sprite de 160x128 píxeles con 16 bits de color consume aproximadamente 40 KB de RAM en un ESP8266. En un ESP32, un Sprite de 16 bits se limita a unos 200x200 píxeles (~80KB), y uno de 8 bits a 320x240 píxeles (~76KB). Un Sprite de 1 bit por píxel para una pantalla completa de 320x240 requiere solo 9600 bytes, ideal para fuentes de mapa de bits de 2 colores. Los Sprites se pueden crear y eliminar dinámicamente, lo que permite liberar RAM cuando no se necesitan, ideal para proyectos con recursos de memoria limitados o que requieren otras funciones intensivas como Wi-Fi. Si una placa ESP32 tiene SPIRAM (PSRAM), los Sprites pueden usar esta memoria, permitiendo Sprites de búfer de pantalla completa de gran tamaño.

Soporte de Pantallas Táctiles

La librería tiene soporte integrado para el controlador de pantalla táctil XPT2046, utilizado comúnmente en pantallas SPI. Esto permite compartir el bus SPI con la TFT, requiriendo solo una línea adicional de selección de chip. Además, la clase Button de Adafruit_GFX está incorporada, con la mejora de que las etiquetas de los botones pueden estar en cualquier fuente, lo que añade gran flexibilidad al diseño de interfaces de usuario.

Fuentes Avanzadas y Suavizadas (Anti-aliased)

TFT_eSPI no solo incluye fuentes proporcionales de diferentes tamaños que se pueden habilitar o deshabilitar en tiempo de compilación para optimizar el uso de la memoria FLASH, sino que también soporta fuentes suavizadas (anti-aliased) en formato .vlw. Estas fuentes, generadas con un sketch de Processing incluido en la carpeta Tools de la librería, permiten un renderizado de texto de alta calidad con bordes suaves, mejorando enormemente la legibilidad y la estética de la interfaz. Soportan caracteres Unicode de 16 bits, lo que significa que puedes mostrar texto en múltiples idiomas (como griego o japonés) utilizando caracteres UTF-8. Los archivos .vlw deben subirse al sistema de archivos FLASH del procesador (SPIFFS, LittleFS) o a una tarjeta SD para su uso. Alternativamente, pueden convertirse a arrays C y almacenarse directamente en FLASH como parte del proceso de compilación, lo que ofrece mejoras de rendimiento y es adecuado cuando no se desea un sistema de archivos o el procesador no lo soporta (ej. STM32). Las fuentes suavizadas no pueden escalarse con setTextSize; se debe crear una fuente para cada tamaño necesario.

Soporte Paralelo de 8 bits

Para usuarios de placas STM Nucleo 64/144 o placas estilo ESP32 UNO, la librería ofrece soporte para las populares pantallas 'Mcufriend' de 8 bits paralelas. Es importante destacar que, en el caso de algunas placas ESP32 estilo UNO, puede ser necesario realizar modificaciones en el cableado para redirigir los pines de entrada analógica a pines GPIO adecuados, como se describe en la documentación (por ejemplo, cablear IO15 a IO35, IO33 a IO34, IO32 a IO36).

TFT_Screen_Capture: Captura de Pantalla para Documentación

Una herramienta muy útil incluida en la librería es el ejemplo TFT_Screen_Capture. Esta permite capturar pantallas completas de tu TFT y enviarlas a un PC. Es una característica invaluable para crear documentación de programas, depuración visual o simplemente para compartir el aspecto de tus interfaces sin necesidad de hardware adicional de captura.

Tabla Comparativa de Soporte de Procesadores e Interfaces

ProcesadorSPI 4 HilosParalelo 8 bitsParalelo 16 bitsSoporte DMA
RP2040Sí (todos)
ESP32NoSí (solo SPI)
ESP32 C3NoNoNo
ESP32 S2NoNoNo
ESP32 S3NoSí (solo SPI)
ESP8266NoNoNo
STM32FxxxNoSí (solo SPI)
Otros (Genéricos)NoNoNo

Nota: Para procesadores genéricos, la librería utiliza las funciones más lentas de la librería SPI de Arduino. Procesadores de alta velocidad como Teensy 3.x y 4.x aún ofrecerán un buen rendimiento.

Tips para la Gestión de Configuraciones (User_Setup.h)

Un aspecto importante a considerar al trabajar con TFT_eSPI es cómo gestionar tus archivos de configuración personalizados. Cada vez que actualizas la librería a una nueva versión, tus configuraciones personalizadas dentro de la carpeta de la librería podrían ser sobrescritas. Para evitar esto, se recomienda una estrategia simple pero efectiva:

  1. Crea una nueva carpeta en tu directorio de librerías de Arduino (generalmente en Documentos/Arduino/libraries) llamada, por ejemplo, TFT_eSPI_Setups.
  2. Coloca tus archivos .h de configuración personalizados dentro de esta nueva carpeta.
  3. Después de una actualización de la librería TFT_eSPI, simplemente edita el archivo User_Setup_Select.h (ubicado dentro de la carpeta de la librería TFT_eSPI) para que apunte a tu archivo de configuración personalizado. Por ejemplo:#include <../TFT_eSPI_Setups/mi_configuracion_personalizada.h>

    Asegúrate de que solo se llame a un archivo de configuración. El ../ al inicio de la ruta significa 'ir un nivel de directorio arriba'.

  4. Para una gestión aún más avanzada, puedes crear tu propio archivo de selección de configuración (por ejemplo, mi_seleccion_configuracion.h) dentro de TFT_eSPI_Setups, y luego editar User_Setup_Select.h para incluir este archivo maestro. De esta manera, solo necesitas modificar tu archivo de selección personal, que nunca será sobrescrito por las actualizaciones de la librería.

Preguntas Frecuentes

¿Qué es una pantalla TFT y por qué usarla con Arduino?
Una pantalla TFT es un tipo de pantalla LCD que utiliza transistores de película delgada para mejorar la calidad de la imagen. Son ideales para proyectos con Arduino porque permiten crear interfaces de usuario interactivas, mostrar datos complejos, gráficos y animaciones a todo color, superando las limitaciones de los displays de caracteres o segmentos.
¿Cuál es la diferencia principal entre la librería Adafruit TFT y TFT_eSPI?
La librería Adafruit TFT es más genérica y adecuada para pantallas TFT de 8 bits, siendo más sencilla de usar para principiantes. TFT_eSPI, por otro lado, está altamente optimizada para procesadores de 32 bits (ESP32, RP2040, STM32, ESP8266), ofreciendo un rendimiento muy superior, funciones avanzadas como Sprites y soporte para fuentes suavizadas, lo que la hace ideal para proyectos que requieren gráficos complejos y de alta velocidad.
¿Necesito una Unidad de Punto Flotante (FPU) para usar TFT_eSPI con todas sus funciones?
No necesariamente. Aunque TFT_eSPI se beneficia de procesadores con FPU para ciertas operaciones (como el dibujo de arcos suaves), la librería incluye algoritmos optimizados (como funciones sqrt() de punto fijo) que mejoran el rendimiento en procesadores sin FPU (como el RP2040), garantizando un buen funcionamiento incluso en estos casos.
¿Puedo usar TFT_eSPI con una placa Arduino UNO estándar (basada en ATmega328P)?
TFT_eSPI está diseñada y optimizada para procesadores de 32 bits. Si bien teóricamente podrías intentar usarla con un Arduino UNO, no se beneficiaría de las optimizaciones de rendimiento (como DMA) y solo soportaría pantallas SPI con las funciones más lentas de la librería SPI de Arduino. Para Arduino UNO, las librerías Adafruit GFX y los controladores específicos de Adafruit suelen ser una mejor y más compatible opción.
¿Cómo configuro los pines de mi pantalla TFT en TFT_eSPI?
A diferencia de otras librerías, en TFT_eSPI la configuración de los pines y del controlador de pantalla se define en el archivo User_Setup_Select.h dentro de la carpeta de la librería, o en un archivo de configuración personalizado que incluyas desde allí. Esto significa que los pines NO se definen directamente en tu sketch de Arduino, lo que mantiene tu código más limpio y modular.
¿Qué son los Sprites en TFT_eSPI y por qué son importantes?
Los Sprites son áreas de memoria RAM que actúan como un "lienzo" virtual donde puedes dibujar gráficos. Una vez que el dibujo está completo en el Sprite, se copia rápidamente a la pantalla real. Esto es crucial para crear animaciones fluidas y actualizaciones de pantalla sin el molesto parpadeo, ya que la pantalla se actualiza en un solo paso en lugar de dibujar cada elemento individualmente.

Dominar la instalación y el uso de librerías como Adafruit TFT y TFT_eSPI abre un mundo de posibilidades para tus proyectos con Arduino. Ya sea que necesites una interfaz simple y funcional o un panel de control gráfico de alta resolución con animaciones fluidas, estas herramientas te proporcionan los medios para lograrlo. Al comprender sus diferencias, características y métodos de configuración, estarás bien equipado para seleccionar la librería adecuada y llevar tus creaciones al siguiente nivel visual.

Si quieres conocer otros artículos parecidos a Pantallas TFT con Arduino: Librerías Esenciales puedes visitar la categoría Librerías.

Subir