Conectar Arduino a una pantalla TFT de 1.4″ a 3.2″


arduino_lcd_tft

¿Qué es un pantalla TFT?

Una pantalla TFT es uno de los tipos de pantallas que podemos emplear en proyectos de electrónica y Arduino. El tamaño de estas pantallas generalmente varía entre 1.44″ a 3.2″ y resoluciones de 128×128 a 240×320 pixeles.

Al igual que el resto de pantallas, un TFT necesitan un controlador que traduzca la información recibida en las señales necesarias de bajo nivel para controlar la electrónica del panel. Este controlador condicionará el esquema de conexión y el código que deberemos usar.

Dentro de la electrónica casera existen varios modelos de TFT y controladores disponible, siendo habituales el ST7735 para tamaños de hasta 120×160 pixels, y el ILI9341 para tamaños de hasta 240×320 pixels. Otros controladores son el ILI9163C, el HX8357 (320X480PX) y el Samsung S6D02A1 (QDTech).

En la mayoría de los casos la comunicación con la pantalla TFT se realiza a través del bus SPI debido al alto volumen de datos que requieren. Por tanto son sencillos de conectar y usar desde Arduino.

Anuncio:

El tamaño y la resolución máxima de la pantalla que podremos controlar viene determinado por las características del modelo de procesador que estamos empleando. En general, manejar una pantalla TFT puede considerarse en el límite de las capacidades de Arduino ya que suponen una importante carga de procesador y de memoria (sólo el programa ocupará en torno a un 50% de la memoria disponible).

Con un Arduino UNO, Mini,y Pro no resulta aconsejable resoluciones mayores de 240×320 pixels (hasta 3.5″ aproximadamente”). Para resoluciones superiores, como 320×480 pixeles, deberemos emplear un procesador superior el STM32 o el ESP8266. Para emplear pantallas más grandes, de 600×800 (7″) en adelante, deberías pensar en emplear otra opción como un Raspberry PI.

Muchos de los modelos disponibles incorporan un lector de tarjetas SD o micro SD, accesible a través del bus SPI, que puede ser empleado para almacenar imágenes que serán mostradas en el TFT. También existen modelos, con un precio superior, que incorporan un panel táctil. En el caso de paneles TFT táctiles, con mayor razón, deberíais plantearos emplear una opción más potente.

Pese a las limitaciones de potencia estas pequeñas pantallas son ampliamente empleadas en gran cantidad de proyectos ya que son una excelente forma de mostrar información al usuario. Por tanto, son una gran alternativa a otros tipos de display como los display LCD Hitachi HD44780 o el LCD Nokia 5510.

Precio

Los precios de estas pequeñas pantallas TFT varía mucho en función de su tamaño, que a su vez está relacionado con la resolución y el controlador.

Entre las más habituales, y por tanto más baratas, podemos encontrar pantallas TFT de 2.4″ y 240×320 pixels con el controlador ILI9341 por unos 3.20€, buscando en vendedores internacionales de AliExpress.

Existen otros modelos con el ILI9341, con tamaños de 2.2″ a 3.2″ y resolución de 240×320 pixels, a un precio similar.

arduino-tft-qdtech-componente

Con el controlador ST7735 podemos encontrar pantallas TFT de 1.8″ con 128×160 pixels por 3.15€.

arduino_lcd_tft_ili9341-componente

También con el mismo controlador ST7735 encontramos pantallas de 1.44″ de 128×128 pixels con un precio de 2.6€.

arduino-tft-st7735-componente

Por supuesto también encontraremos otros tipos de pantallas con controladores QDTech, Samsung S6D02A1 o ILI9163C. En general, suelen ser más caras que las pantallas anteriores.

¿Cómo funciona un pantalla TFT?

Las pantallas TFT son una variación de las pantallas LCD (Liquid Crystal Display). A grandes rasgos, un LCD es un panel de cristal que se vuelve opaco y su opacidad se controla eléctricamente.

Los paneles LCD no generan su propia luz sino que necesitan una luz trasera (backlight) proporcionada por alguna fuente de luz (por ejemplo, fluorescencia o LED). El panel LCD tapa la luz emitida en ciertos puntos, lo que permite generar una imagen.

arduino_lcd_tft_display

Para conseguir tapar la luz emitida esta polarizada y la última capa de la pantalla presenta un cristal polarizado. Las moléculas del LCD pueden ser alineadas eléctricamente para modificar la polarización de la luz que la atraviesa, “girándola” a medida que pasa a través del cristal. De esta forma, se puede controlar que el grado de opacidad del panel LCD.

En una pantalla TFT RGB cada pixel tiene tres pequeñas celdas LCD con filtros de color que tapan uno de los componentes de la luz trasera, lo que genera la imagen formada por subpixels de color.

La tecnología TFT (Thin Transistor Layer) hace referencia a la electrónica necesaria para conmutar el LCD. Los subpixels se distribuyen en matriz, de forma que cada uno se controla la encendiendo la fila y columna correspondientes. Para evitar las caídas de tensión producidas al alimentar varios pixels en serie, cada uno dispone de un pequeño transistor en una capa delgada, que da origen al nombre de esta tecnología.

Esquema de montaje

La conexión de estos paneles es sencilla, simplemente alimentamos el módulo desde Arduino mediante GND y 5V y conectamos los pines de datos del TFT con Arduino como vimos en la entrada sobre el bus SPI.

Como vimos en esta entrada, la mayor dificultad es que cada fabricante emplea denominaciones ligeramente diferentes para los pines que intervienen en el bus SPI.

Basándonos en la tabla que vimos en la entrada sobre el bus SPI con designaciones habituales para los pines en distintos dispositivos, la siguiente tabla muestra los distintos pines que encontraremos en los distintos modelos de TFT, con la equivalencia en colores y pines de Arduino que emplearemos en esta entrada.

NombreAliasPin (en Arduino Uno o Nano)Descripcion
VCC +3.3 … 5 Volt
GNDGroundGround
SCLKCLK/SCK/SCLKD13 (hardware)Clock (SPI)
MISOMISO/SDO/DOUTD12 (hardware)Master In Slave Out (SPI)
MOSIMOSI/SDI/DIND11 (hardware)Master Out Slave In (SPI)
SSSS/CS/SDAD10 (hardware, solo en esclavo)Slave/Chip Select (SPI)
RESRST/RES/RESTD9 (variable, se fija por software)Controller Reset
RSRS/DCD8 (variable, se fija por software)Mode: Command/Data

La conexión de cada pantalla TFT dependerá tanto del controlador que emplee como de los detalles del módulo en el que va montada. A modo de ejemplo, el siguiente esquema muestra la conexión de una TFT 2.2″ 240×320 pixels con controlador ILI9341.

arduino_lcd_tft_ili9341-conexion

El siguiente esquema muestra la conexión de un módulo con pantalla TFT 1.8″ 128×160 pixels con controlador ST7735.

arduino-tft-qdtech-conexion

Mientras que en el último ejemplo tenemos un módulo TFT 1.4″ 128×128 pixels también con controlador ST7735.

arduino-tft-st7735-esquema

En todos los casos la conexión vista desde Arduino sería la misma, que se muestra en la siguiente imagen.

arduino-tft-conexion

Los pines de SPI que figuran son válidos para los modelos En Arduino Uno, Nano y Mini Pro. Para otros modelos de Arduino consultar el esquema patillaje correspondiente.
Verificar que vuestra placa es compatible con 5V antes de conectarla a Arduino. Si no, tendréis que usar un adaptador de nivel lógico, o colocar resistencias de 1K que limiten la corriente que llega a la pantalla TFT.

Ejemplos de códigos

Para manejar la pantalla TFT necesitaremos una librería apropiada para el tipo de controlador que emplea. La siguiente lista contiene enlaces a librerías para los principales controladores de TFT.

A su vez todas estas librerías emplean la Adafruit GFX para realizar gráficos de forma sencilla.

Cada librería proporciona ejemplos de código, que resulta aconsejable revisar. Todos los códigos son muy similares, ya que emplean la librería Adafrut GFX para los gráficos.

No tendría mucho sentido incorporar en la entrada todos. A modo de ejemplo, el siguiente código muestra una demo para una pantalla TFT de 2.2″/2.4″ con controlador ILI9341 y una resolución de 240×340 pixels.

Resultado

Aquí tenéis un vídeo mostrando el resultado de ejecutar alguno de los ejemplos.

Anuncio:

Previous Conectar Arduino a una pantalla OLED de 0.96"
Next Detectar sonido con Arduino y micrófono KY-038
1000
3 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
newest oldest
Albert Bagué

Muy bien,…excelente. simplificado, claro y concreto como siempre.

Nilo

Hola Luis, primero quería felicitarte por tu web, es fantástica. Segundo, tenía una duda: tú dices que estás pantallas trabajan a 5V, sin embargo vienen con un componente sin soldar: el J1. Este footprint donde se soldaría quizás una Resistencia de 0 ohmios ¿No serviría como switch para trabajar directamente con microcontroladores de 3,3V ya que la electrónica interna de la pantalla trabajan a esa tensión?. Al soldar la resistencia R0 o aplicar un poco de estaño para unir los pads del footprint J1, ¿La pista simplemente no se saltaría el LDO que baja a 3,3V?. Por favor, corrígeme si… Read more »

Edurne

Buenas, tenemos un tft con controlador ILI9163C pero se conecta en paralelo no en serie
no conseguimos la libre´ria asociada, todo lo que encontramos por la red es SPI
podrías ayudarnos?
gracias