Cómo usar una pantalla LCD I2C con Arduino paso a paso
Conectas la pantalla, subes el código, la retroiluminación se enciende y no aparece ni una letra. Es el problema más común al usar una pantalla LCD I2C con Arduino, y casi nunca es culpa del módulo: suele ser la dirección I2C, el contraste...

Conectas la pantalla, subes el código, la retroiluminación se enciende y no aparece ni una letra. Es el problema más común al usar una pantalla LCD I2C con Arduino, y casi nunca es culpa del módulo: suele ser la dirección I2C, el contraste o un cable en el pin equivocado.
En el hacklab hemos montado decenas de estas pantallas 16x2 para termómetros, contadores y relojes, y las fallas se repiten siempre en el mismo orden. Aquí tienes el montaje completo, el código mínimo y la lista de comprobación que usamos cuando algo no funciona.
Qué es una pantalla LCD I2C y por qué conviene
Una LCD 16x2 normal, basada en el controlador HD44780, necesita entre 6 y 10 cables de datos más un potenciómetro aparte para el contraste. La versión I2C lleva soldada detrás una pequeña placa adaptadora con el chip PCF8574, que convierte todo eso en solo cuatro pines: VCC, GND, SDA y SCL.
La ventaja es enorme en proyectos pequeños. Te quedan libres casi todos los pines digitales del Arduino Uno para sensores, botones o relés. Además, varios dispositivos I2C pueden compartir los mismos dos cables de datos, siempre que cada uno tenga una dirección distinta.
En tiendas de electrónica locales el conjunto de pantalla y adaptador suele costar entre 3 y 6 euros. También existe la versión 20x4, con cuatro líneas de 20 caracteres, que se conecta igual.
Material que necesitas
- Arduino Uno, Nano o compatible.
- Pantalla LCD 16x2 con adaptador I2C ya soldado.
- Cuatro cables dupont hembra a macho.
- Un destornillador pequeño de punta plana o de estrella para el potenciómetro del adaptador.
- Opcional: una protoboard si vas a sumar sensores. Si nunca has usado una, revisa nuestra guía sobre cómo usar una protoboard antes de empezar.
Conexión de la pantalla LCD I2C con Arduino
Los pines I2C cambian según la placa. Esta tabla cubre las más habituales:
| Pin del adaptador | Arduino Uno y Nano | Arduino Mega |
|---|---|---|
| GND | GND | GND |
| VCC | 5V | 5V |
| SDA | A4 | Pin 20 |
| SCL | A5 | Pin 21 |
En las placas Uno más recientes también hay pines SDA y SCL rotulados junto al pin AREF. Son los mismos que A4 y A5, así que puedes usar cualquiera de los dos pares, pero no ambos para dispositivos distintos pensando que son buses separados.
Alimenta la pantalla con 5 V, no con 3,3 V. Con 3,3 V la retroiluminación se enciende débil y los caracteres casi no se ven, lo que hace pensar que el módulo está roto.
Encontrar la dirección I2C
Cada adaptador responde a una dirección. Las más comunes son 0x27 y 0x3F, según el fabricante del chip. Si usas la equivocada, la pantalla queda encendida pero en blanco.
Para salir de dudas, carga el ejemplo de escáner I2C. En el IDE de Arduino lo encuentras buscando "i2c_scanner" en la sección de ejemplos o en el gestor de bibliotecas. Ábrelo, súbelo y abre el monitor serie a 9600 baudios. Verás una línea con la dirección encontrada, por ejemplo "I2C device found at address 0x27". Apúntala.
El código mínimo paso a paso
- Instala la biblioteca LiquidCrystal I2C desde el gestor de bibliotecas del IDE. Hay varias con nombre parecido; la de Frank de Brabander es la más usada y la que siguen casi todos los ejemplos.
- Al inicio del programa incluye Wire.h y LiquidCrystal_I2C.h.
- Crea el objeto con la dirección y el tamaño: LiquidCrystal_I2C lcd(0x27, 16, 2);
- En setup escribe lcd.init(); y después lcd.backlight(); para encender la luz.
- Coloca el cursor con lcd.setCursor(0, 0);, donde el primer número es la columna y el segundo la fila, ambos empezando en cero.
- Escribe el texto con lcd.print("Hola hacklab");
- Para la segunda línea usa lcd.setCursor(0, 1); y otro print.
Si quieres mostrar un valor que cambia, como una temperatura, imprímelo en loop cada 500 milisegundos y añade espacios al final para borrar los dígitos sobrantes. Así lo hicimos en el termómetro con Arduino y DS18B20, que encaja perfecto con esta pantalla.
Un detalle que sorprende al principio: la pantalla no muestra tildes ni la letra ñ, porque su juego de caracteres interno es japonés y occidental básico. Si escribes "año" verás un símbolo extraño. La solución es crear tus propios caracteres con lcd.createChar(), que admite hasta ocho diseños de 5x8 píxeles guardados en la memoria de la pantalla. Defines cada fila del carácter como un número binario, lo cargas en setup y luego lo imprimes con lcd.write() indicando su posición, del 0 al 7. Con eso puedes dibujar la ñ, un símbolo de grado o una pequeña barra de nivel de batería.
Por qué no conviene usar lcd.clear() en cada vuelta
Muchos tutoriales llaman a lcd.clear() al principio de loop para "limpiar" antes de escribir. Funciona, pero produce un parpadeo molesto, porque clear tarda unos 2 milisegundos y deja la pantalla vacía durante cada ciclo. En un reloj o un medidor que se actualiza varias veces por segundo se nota mucho.
Lo que recomendamos es escribir siempre en la misma posición y rellenar con espacios. Si un número pasa de 100 a 99, imprime "99 " con un espacio final y el dígito viejo desaparece sin parpadeo. Usa clear solo cuando cambies de pantalla completa, por ejemplo de un menú a otro.
Lista de comprobación cuando no aparece nada
- Solo se ve una fila de cuadros negros. El contraste está demasiado alto o el código no inicializa la pantalla. Gira el potenciómetro azul del adaptador poco a poco con la pantalla encendida.
- Luz encendida pero nada de texto. Casi siempre es la dirección. Vuelve a pasar el escáner.
- Caracteres raros o símbolos. Revisa que SDA y SCL no estén cruzados y que los cables sean cortos, de menos de 30 cm.
- El escáner no encuentra nada. Comprueba GND común y mide 5 V entre VCC y GND con el multímetro.
- Se reinicia el Arduino. Puede ser alimentación insuficiente si además tienes motores o relés en el mismo puerto USB.
Si sigue fallando sin motivo claro, repasa los errores básicos que explicamos en por qué tu primer proyecto con Arduino falla; muchas veces es un cable dupont roto por dentro.
Preguntas frecuentes
¿Cuál es la dirección I2C de una pantalla LCD 16x2?
Las más habituales son 0x27 y 0x3F, según el chip del adaptador. Algunos módulos permiten cambiarla con tres puentes de soldadura marcados A0, A1 y A2. Si tienes dudas, usa un escáner I2C para confirmarla.
¿Por qué mi LCD I2C muestra cuadros negros?
Los cuadros negros en la primera fila indican que la pantalla tiene alimentación pero no recibe datos correctos o tiene el contraste al máximo. Ajusta el potenciómetro del adaptador y revisa la dirección en el código. También verifica que llames a lcd.init() en setup.
¿Puedo conectar dos pantallas LCD I2C al mismo Arduino?
Sí, siempre que tengan direcciones distintas. Cambia la dirección de una de ellas soldando uno de los puentes A0, A1 o A2 del adaptador. Después crea dos objetos en el código, cada uno con su dirección.
More in Electrónica
Electrónica
Cómo usar un servomotor con Arduino sin que tiemble
Conectas el servomotor con Arduino, subes el ejemplo de barrido y el servo tiembla, zumba o, peor, la placa se reinicia cada...
Electrónica
Cómo medir distancia con Arduino y el sensor HC-SR04
Montaste el sensor, subiste el programa y el monitor serie muestra 0 cm, luego 1190 cm, luego 0 otra vez.
Electrónica
Cómo usar un módulo relé con Arduino sin riesgos
Quieres que tu Arduino encienda una lámpara, una bomba de agua o un ventilador, pero el pin digital solo entrega 5 V y unos 20...