Cómo configurar direcciones I²C y usar un escáner I²C para LCD1602 y LCD2004
En este tutorial exploraremos cómo configurar las direcciones I²C y utilizar un escáner I²C para las pantallas LCD1602 y LCD2004. Entender la comunicación I²C es crucial para integrar estos módulos LCD con tus proyectos Arduino, ya que permite una transmisión de datos y control eficientes. Al final de esta guía, podrás identificar de manera efectiva las direcciones I²C de tus LCD y asegurarte de que funcionan correctamente.


Usaremos el sensor BMP-180 como parte de este proyecto, que funciona mediante comunicación I²C. El sensor proporciona lecturas de temperatura y presión, que pueden mostrarse en la LCD1602 o en la LCD2004. Este tutorial incluirá instrucciones de cableado, fragmentos de código y una demostración de los resultados esperados. Para una comprensión más visual, asegúrate de revisar el video asociado (a las 00:00).
Hardware explicado
Los componentes principales de este proyecto incluyen el sensor BMP-180, una pantalla LCD1602 o LCD2004 y una placa Arduino. El BMP-180 es un sensor de presión digital que se comunica mediante el protocolo I²C, requiriendo solo dos líneas de datos: SDA (línea de datos) y SCL (línea de reloj). Las pantallas LCD también son compatibles con I²C y pueden controlarse fácilmente usando el mismo protocolo de comunicación, lo que permite una configuración ordenada y eficiente.
El BMP-180 funciona con una tensión de alimentación entre 1.8V y 3.6V, lo que significa que puede alimentarse mediante un regulador de tensión si está utilizando una fuente de mayor voltaje. Las pantallas LCD, por otro lado, normalmente funcionan a 5V, lo que facilita su conexión con una placa Arduino sin componentes adicionales.
Detalles de la ficha técnica
| Fabricante | Bosch |
|---|---|
| Número de pieza | BMP-180 |
| Tensión lógica/E/S | 1.8 - 3.6 V |
| Tensión de alimentación | 1.8 - 3.6 V |
| Corriente de salida (por canal) | 3.6 µA |
| Corriente de pico (por canal) | 1 mA |
| Guía sobre la frecuencia PWM | No aplica |
| Umbrales de la lógica de entrada | No aplica |
| Caída de tensión / RDS(on)/ saturación | No aplica |
| Límites térmicos | de -40 a +85 °C |
| Paquete | 3.6 x 3.8 mm |
| Notas / variantes | Sensor de temperatura y presión |
- Asegúrese de un suministro de voltaje adecuado: 1.8V a 3.6V para el BMP-180.
- Utilice resistencias pull-up en las líneas SDA y SCL para una comunicación I²C estable.
- Mantenga los cables cortos para evitar la degradación de la señal.
- Compruebe la dirección I²C correcta durante el escaneo.
- Rango de temperatura del monitor: -40 a +85 °C para BMP-180.
Instrucciones de cableado

Para cablear el sensor BMP-180 y la pantalla LCD a tu Arduino, sigue estos pasos:

Primero, conecta el BMP-180VnConecta el pin a la salida de 5V del Arduino. A continuación, conecta elGNDpin del BMP-180 a la tierra del Arduino. ElSDAel pin del BMP-180 debe estar conectado al del ArduinoA4pasador, mientras que elSCLel pin se conecta aA5.
Para la LCD1602 o la LCD2004, conectaVCCpin al 5V en el Arduino y elGNDconectar el pin a tierra también. ElSDAEl pin del LCD también debe conectarse aA4(compartido con BMP-180), y elSCLel pin debería conectarse aA5.
Esta configuración permite que ambos dispositivos se comuniquen a través del mismo bus I²C, garantizando una configuración limpia y eficiente.
Ejemplos de código y guía paso a paso
Para buscar direcciones I²C, utilizaremos un fragmento de código sencillo. El siguiente extracto inicializa la comunicación I²C y prepara el monitor serie:
#include
void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
Este código inicializa la librería Wire para la comunicación I²C y configura el monitor serie para la salida. Es esencial para la depuración y garantizar que los dispositivos I²C sean reconocidos.
La función loop busca dispositivos en el bus I²C e imprime sus direcciones:
void loop() {
byte error, address;
int nDevices = 0;
Serial.println("Scanning...");
for(address = 1; address < 127; address++) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C device found at address 0x");
Serial.println(address, HEX);
nDevices++;
}
}
if (nDevices == 0) Serial.println("No I2C devices found\n");
delay(5000); // wait 5 seconds for next scan
}
Este bucle comprueba cada dirección desde 1 hasta 127, intentando comunicarse con cualquier dispositivo presente. Si un dispositivo responde a la comunicación, su dirección se imprime en el monitor serie. Este es un paso crucial para identificar la dirección I²C de tu LCD u otros dispositivos conectados.
Demostración / Qué esperar
Al ejecutar el escáner I²C, debería ver mensajes en el monitor serie que indiquen si se encontraron dispositivos I²C. Si tiene éxito, la salida mostrará las direcciones de los dispositivos conectados, formateadas como valores hexadecimales (por ejemplo, Dispositivo I²C encontrado en la dirección 0x27). Si no se encuentran dispositivos, aparecerá un mensaje correspondiente.
Es importante asegurarse de que todas las conexiones estén seguras y de que se suministren los niveles de voltaje correctos para evitar problemas con la detección del dispositivo (en el video a 05:30).
Cosas que podrías necesitar
-
AmazonasCompra LCD1602-I2C en Amazonamzn.to
-
AliExpressCompra LCD1602-I2C en AliExpresss.click.aliexpress.com
-
AliExpressComprar 10 piezas de LCD1602-I2C en AliExpresss.click.aliexpress.com
Recursos y referencias
Aún no hay recursos.
Archivos📁
Bibliotecas de Arduino (zip)
-
Biblioteca LCD1602 para Arduino de Robojax
robojax-LCD1602-I2C-library-master.zip0.01 MB
Archivo de Fritzing
-
LCD2004-I2C
LCD2004-I2C.fzpz0.02 MB