Hoy en día, las pantallas TFT con el controlador ILI9341 son una de las opciones más populares para proyectos de prototipado con Arduino debido a su versatilidad y sus capacidades gráficas. Si has estado buscando cómo aprovechar estas pantallas en tus proyectos, llegaste al lugar indicado. Aquí te explicamos todo lo que necesitas saber para conectar, configurar y usar la pantalla TFT ILI9341, y además veremos algunos ejemplos de código muy útiles.
Trabajar con esta pantalla puede parecer complicado al principio debido a la cantidad de pines y conexiones necesarias, pero una vez que entiendes el proceso, se vuelve mucho más sencillo. En este artículo vamos a ver paso a paso cómo realizar la conexión, probarla y programarla.
Materiales necesarios para usar la pantalla ILI9341 con Arduino
- Arduino UNO o Arduino Pro Mini de 3.3V: Si utilizas un Arduino UNO, necesitarás adaptadores de nivel lógico para no dañar la pantalla, ya que ésta trabaja con 3.3V. Si usas un Arduino Pro Mini de 3.3V, puedes conectar directamente.
- Pantalla TFT ILI9341: Pantalla de 2.4 o 2.8 pulgadas con resolución de 240×320 píxeles.
- Conversor de nivel lógico (si usas Arduino UNO): para adaptar los niveles de 5V a 3.3V.
- Protoboard y cables de conexión.
Paso 1: Conectar la pantalla ILI9341 al Arduino
La pantalla TFT ILI9341 usa la interfaz SPI para comunicarse con Arduino, así que será importante realizar las conexiones correctas entre los pines SPI del Arduino y la pantalla. La siguiente tabla explica detalladamente cómo hacer las conexiones básicas:
Pin de la pantalla | Pin del Arduino |
---|---|
SDO (MISO) | Pin 12 |
SCK | Pin 13 |
SDI (MOSI) | Pin 11 |
D/C | Pin 9 |
CS | Pin 10 |
GND | Pin GND |
VCC | Pin 3.3V |
LED | Pin 3.3V |
Recuerda que si estás utilizando un Arduino UNO, será necesario usar los adaptadores de nivel lógico para convertir los 5V de los pines del Arduino a 3.3V. Si utilizas un Arduino Pro Mini de 3.3V, esta precaución no es necesaria.
Paso 2: Instalar las librerías necesarias
Para interactuar con la pantalla ILI9341, necesitamos instalar algunas librerías en el IDE de Arduino. Debemos asegurarnos de tener las siguientes librerías:
- Adafruit_ILI9341: Esta es la librería principal para manejar pantallas ILI9341 con Arduino.
- Adafruit_GFX: Esta librería facilita la creación de gráficos básicos como líneas, círculos, rectángulos, etc.
Para instalar estas librerías, abre el IDE de Arduino y ve a Programa > Incluir librería > Gestionar bibliotecas y busca ILI9341 para instalar la librería correspondiente. Así mismo, busca la librería Adafruit GFX y asegúrate de instalar la adecuada.
Paso 3: Probar la pantalla TFT con un ejemplo básico
Una vez instaladas las librerías, es momento de probar la pantalla para asegurarnos de que todo está correctamente conectado y funcionando. El IDE de Arduino incluye un ejemplo muy completo que nos será de gran ayuda. Vamos a cargar el graphictest:
- Abre el IDE de Arduino.
- Ve a Archivo > Ejemplos > Adafruit_ILI9341 > graphictest.
- Compila y sube el ejemplo a tu Arduino.
Si todo ha ido bien, deberías ver una serie de gráficos mostrando en la pantalla diferentes tipos de líneas, formas y colores.
Paso 4: Crear un proyecto práctico: Mostrar valores analógicos en la pantalla ILI9341
Uno de los primeros proyectos que podemos hacer con esta pantalla es visualizar el valor de una entrada analógica, como el voltaje de un potenciómetro. Para esto, utilizaremos los pines de la pantalla que ya hemos conectado, además de un potenciómetro conectado a la entrada analógica A0 del Arduino.
El siguiente código muestra cómo podemos leer el valor analógico del potenciómetro y mostrarlo en la pantalla:
#include
#include
#include
#define TFT_DC 9
#define TFT_CS 10
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
void setup() {
tft.begin();
tft.setRotation(1);
tft.fillScreen(ILI9341_BLACK);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
}
void loop() {
int val = analogRead(A0);
float voltage = val * (5.0 / 1023.0);
tft.setCursor(60, 30);
tft.print("Voltaje: ");
tft.print(voltage);
delay(500);
}
Este programa lee continuamente el voltaje y lo muestra en la pantalla en formato texto. Si giras la perilla del potenciómetro deberías ver el cambio reflejado en la pantalla casi de inmediato.
Agregando un botón en la pantalla táctil ILI9341
Además de mostrar información, la pantalla ILI9341 también tiene capacidad táctil si cuenta con el controlador XPT2046. Vamos a crear un ejemplo sencillo que muestre cómo detectar toques en la pantalla.
Primero, debemos hacer las conexiones del controlador táctil de la pantalla. Los pines principales para el controlador táctil son:
- TOUCH_CS: Pin 10.
- TOUCH_IRQ: Pin 2.
Después de hacer estas conexiones, utilizaremos la librería XPT2046_Touchscreen para detectar los toques. A continuación te dejo un código que muestra un botón en la pantalla, que cambia de color cada vez que es presionado.
#include
#include
#include
#include
#define TFT_DC 9
#define TFT_CS 10
#define TOUCH_CS 10
#define TOUCH_IRQ 2
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
XPT2046_Touchscreen ts(TOUCH_CS, TOUCH_IRQ);
void setup() {
tft.begin();
ts.begin();
tft.setRotation(1);
tft.fillScreen(ILI9341_BLACK);
tft.fillRect(50, 160, 100, 50, ILI9341_RED);
tft.setCursor(75, 175);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.println("BOTON");
}
void loop() {
if (ts.touched()) {
TS_Point p = ts.getPoint();
if (p.x >= 50 && p.x <= 150 && p.y >= 160 && p.y <= 210) {
tft.fillRect(50, 160, 100, 50, ILI9341_GREEN);
tft.setCursor(75, 175);
tft.println("PULSADO");
}
}
}
El código detecta si el botón ha sido pulsado y cambia su color de rojo a verde. También puedes personalizar la posición y el tamaño del botón según tus necesidades.
Es fundamental asegurarse de que la pantalla está correctamente calibrada para que los toques correspondan adecuadamente a las coordenadas de la pantalla. Si notas que la respuesta táctil no es precisa, quizás sea necesario hacer una calibración relacionada con la resolución de la pantalla.