La pantalla LCD 16x2 con módulo I2C es la misma pantalla de siempre, pero con una plaquita detrás que reduce la conexión a solo 4 cables. En esta guía te explicamos qué es I2C, cómo conectarla al Arduino Uno, cómo encontrar la dirección de tu módulo y el código para tu primer mensaje.
GND, VCC, SDA y SCL
A4 y A5 en el Uno
el potenciómetro viene en el módulo
¿Qué es I2C?
I2C (se lee "i dos c" o "i cuadrado c") es una forma de comunicación en la que varios módulos comparten los mismos 2 cables:
- SDA (datos): por aquí viajan la información y las órdenes.
- SCL (reloj): marca el ritmo para que el Arduino y el módulo se entiendan.

El Arduino es el que manda, y cada módulo tiene una dirección: un número que lo identifica, como 0x27. Es como un edificio: hay un solo pasillo (los 2 cables) y cada departamento tiene su número. Cuando el Arduino quiere escribir en la pantalla, "toca la puerta" de su dirección y solo ella responde.
Gracias a esto puedes conectar en los mismos 2 cables la pantalla, un reloj DS3231 y otros sensores I2C. La única regla: no puede haber dos módulos con la misma dirección en los mismos cables.
¿Qué cambia respecto a la LCD normal?
Si ya leíste nuestra guía de la pantalla LCD 16x2 con Arduino, esta es la diferencia:
| LCD 16x2 normal | LCD 16x2 con I2C | |
|---|---|---|
| Pines de la pantalla que conectas | 12 | 4 |
| Pines del Arduino que ocupa | 6 (más 5V y GND) | 2: SDA y SCL (más 5V y GND) |
| Potenciómetro de contraste | Lo pones tú en la protoboard | Ya viene en el módulo |
| Luz de fondo | Resistencia de 220 Ω | Se enciende y apaga desde el código |
| Librería | LiquidCrystal (ya viene en el IDE) | LiquidCrystal I2C (se instala una vez) |
El módulo I2C (PCF8574)
La plaquita negra de atrás tiene un chip PCF8574: recibe las órdenes por los 2 cables del I2C y las pasa a los 16 pines de la pantalla. Por eso, para el Arduino, la pantalla pasa a ser un módulo I2C más.
Puedes encontrarla ya soldada a la pantalla, o comprar el módulo suelto y soldarlo tú a una LCD 16x2 o 20x4.

- 4 pines (GND, VCC, SDA, SCL): son los únicos que van al Arduino.
- Potenciómetro azul: ajusta el contraste. Si no ves las letras, casi siempre es esto.
- Jumper LED: si tu módulo lo tiene, debe estar puesto para que se encienda la luz de fondo.
- A0, A1 y A2: sirven para cambiar la dirección. Los vemos más abajo.
¿0x27 o 0x3F? Depende del chip
La dirección de fábrica depende de la versión del chip que traiga tu módulo, y el nombre está impreso encima:
| Chip impreso | Direcciones posibles | Normalmente viene en |
|---|---|---|
| PCF8574 (por ejemplo PCF8574T) | 0x20 a 0x27 | 0x27 |
| PCF8574A (por ejemplo PCF8574AT) | 0x38 a 0x3F | 0x3F |
Como los módulos pueden venir de distintos fabricantes, la forma segura de saberlo es con el escáner I2C: un código corto que le pregunta a cada dirección quién está conectado. Te lo dejamos más abajo.
Cómo conectarla al Arduino Uno

| Módulo I2C | Arduino Uno / Nano | Arduino Mega 2560 |
|---|---|---|
| GND | GND | GND |
| VCC | 5V | 5V |
| SDA | A4 | 20 (SDA) |
| SCL | A5 | 21 (SCL) |
Guíate siempre por los nombres impresos en tu módulo, no por la posición de los pines. Si es tu primera vez con estos pines, revisa nuestra guía de pines del Arduino Uno.
Paso 1: encuentra la dirección con el escáner I2C
Abre el Arduino IDE, copia este código y súbelo con la pantalla ya conectada. No necesitas instalar nada: la librería Wire ya viene incluida.
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
Serial.println("Buscando dispositivos I2C...");
byte encontrados = 0;
for (byte direccion = 1; direccion < 127; direccion++) {
Wire.beginTransmission(direccion);
if (Wire.endTransmission() == 0) { // 0 = alguien respondió
Serial.print("Encontrado en la direccion 0x");
if (direccion < 16) Serial.print("0");
Serial.println(direccion, HEX);
encontrados++;
}
}
Serial.print("Listo: ");
Serial.print(encontrados);
Serial.println(" dispositivo(s) encontrado(s)");
}
void loop() {
}
Abre el Monitor Serie (la lupa arriba a la derecha del IDE) y elige 9600 baudios. Verás algo así:

Anota la dirección que te salió. Si dice 0 dispositivos, revisa los cables antes de seguir: que SDA y SCL no estén invertidos y que GND y VCC estén bien conectados.
Paso 2: instala la librería LiquidCrystal I2C
- En el Arduino IDE, abre el menú Herramientas → Administrar bibliotecas (o el ícono de libros de la izquierda).
- Busca LiquidCrystal I2C.
- Instala la de Frank de Brabander.
Paso 3: tu primer mensaje
Copia este código, cambia 0x27 por la dirección que te dio el escáner y súbelo:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// (dirección, columnas, filas): pon aquí la dirección de tu escáner
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init(); // inicia la pantalla
lcd.backlight(); // enciende la luz de fondo
lcd.setCursor(0, 0); // columna 0, fila 1
lcd.print("Hola Nanoparuro!");
}
void loop() {
lcd.setCursor(0, 1); // columna 0, fila 2
lcd.print("Segundos: ");
lcd.print(millis() / 1000); // tiempo desde que encendió
delay(200);
}
Si todo está bien, verás "Hola Nanoparuro!" en la primera fila y un contador de segundos en la segunda. Si la luz se enciende pero no ves letras, gira el potenciómetro azul del módulo.
LiquidCrystal_I2C lcd(0x27, 20, 4); (con tu dirección) y ya puedes usar 4 filas de 20 caracteres.
Funciones que más vas a usar
| Función | Qué hace |
|---|---|
lcd.print("texto") | Escribe texto o números donde está el cursor. |
lcd.setCursor(columna, fila) | Mueve el cursor. Se cuenta desde 0: la primera fila es 0 y la segunda es 1. |
lcd.clear() | Borra toda la pantalla. |
lcd.backlight() / lcd.noBacklight() | Enciende o apaga la luz de fondo desde el código. |
lcd.createChar(n, dibujo) | Crea hasta 8 caracteres propios, como un corazón o una flecha. |
Problemas comunes

Solo luz, sin letras
Casi siempre es el contraste: gira el potenciómetro azul del módulo despacio, de un extremo al otro. Si sigue igual, revisa con el escáner que la dirección del código sea la correcta.
Cuadros en la fila 1
La pantalla tiene energía, pero no le llegan los datos. Revisa que SDA vaya a A4 y SCL a A5, y que la dirección del código sea la del escáner.
No enciende la luz
Revisa GND y VCC, que el jumper LED esté puesto (si tu módulo lo tiene) y que el código tenga lcd.backlight();.
Preguntas frecuentes
¿Puedo conectar dos pantallas I2C al mismo Arduino?
Sí, siempre que tengan direcciones distintas. Si las dos vienen con la misma, a una le puedes cambiar la dirección uniendo con un punto de soldadura alguno de los pares A0, A1 o A2 del módulo. Después vuelve a usar el escáner para ver su nueva dirección y crea una segunda pantalla en el código, por ejemplo LiquidCrystal_I2C lcd2(0x26, 16, 2); con la dirección que te salga. Si es tu primera vez soldando, revisa nuestros tips para soldar.
Compré el módulo suelto, ¿cómo lo pongo en mi pantalla?
Sus 16 pines se sueldan a los 16 pines de la pantalla, por la parte de atrás. Fíjate en que queden alineados pin con pin y que el módulo no tape la pantalla. Si nunca has soldado, te recomendamos comprar la pantalla con el módulo ya soldado.
¿Qué otros módulos usan I2C?
Muchos. Por ejemplo, la pantalla OLED 0.96", el reloj DS3231, el sensor de luz BH1750, el driver de servos PCA9685 y el conversor ADS1115. Todos se conectan a los mismos SDA y SCL, y con el escáner puedes ver la dirección de cada uno.
¿Listo para conectar tu pantalla con solo 4 cables? Encuéntrala en Nanoparuro.
LCD 16x2 con I2C LCD 20x4 con I2C Solo el módulo I2C
Pantalla LCD 16x2 con módulo I2C (PCF8574): qué es I2C y cómo conectarla a Arduino