Obtener dirección de módulo I2C para LCD con Arduino

Introducción

Si queremos usar el módulo I2C para conectar nuestra LCD y ahorrar cables, es necesario (en la mayoría de casos) saber la dirección hexadecimal de dicho módulo. Dicha dirección puede (y siempre lo hace) variar.

Para ahorrarnos los problemas, alguien más hizo un sketch en Arduino que prueba con todas las direcciones posibles y en caso de encontrar algún dispositivo I2C nos avisa.

Hoy veremos cómo usar dicho sketch. Por cierto, lo encontré aquí, créditos a su autor.

Conexión

La conexión es simple. Un pin va a tierra, otro a voltaje positivo. Los otros dos son SCL y SDA. Lo que varía son estos dos últimos pines. Aquí mostraré la conexión para Arduino MEGA, UNO y Leonardo.

Arduino MEGA

  • SCL: Pin 21
  • SDA: Pin 20

Imagen de Fritzing:

Arduino UNO

  • SDA: Pin A4
  • SCL: Pin A5

Imagen de Fritzing:

Arduino Leonardo

Los pines SCL y SDA están marcados con esas leyendas. De todos modos dejo la imagen de Fritzing:

Código y modificaciones

Le hice algunas modificaciones al código original. Para comenzar, lo traduje al español y reduje el tiempo de espera en cada iteración. También lo puse en un gist de GitHub para que cualquier persona pueda copiarlo, pegarlo en el editor de Arduino y subirlo a la tarjeta.

Nada de zips, nada de “Descarga esta librería” y cosas de esas. Simplemente pega el siguiente código en tu editor:

#include <Wire.h>

void setup() {
  Wire.begin();
  Serial.begin(9600);
}

void loop() {
  byte codigoDeRespuesta, direccion;
  int dispositivosEncontrados = 0;
  Serial.println("\n\nBuscando dispositivos...");

  for (direccion = 1; direccion < 127; direccion++ ) {
    Wire.beginTransmission(direccion);
    codigoDeRespuesta = Wire.endTransmission();

    if (codigoDeRespuesta == 0) {
      Serial.print("Dispositivo encontrado en la dirección 0x");
      if (direccion < 16)
        Serial.print("0");
      Serial.print(direccion, HEX);

      dispositivosEncontrados++;
    }else if (codigoDeRespuesta == 4) {
      Serial.print("Error desconocido en la dirección 0x");
      if (direccion < 16)
        Serial.print("0");
      Serial.println(direccion, HEX);
    }
  }
  if (dispositivosEncontrados == 0) Serial.println("No se encontró ningún dispositivo");
  delay(1000);
}

Una vez subido al Arduino, abre el monitor serial con Ctrl + Shift + M y se verá algo así:

Así estará infinitamente. Si dice que no se encontró ninguno, por favor verifica la conexión. Ya con la dirección podemos pasar ahora sí a trabajar con una pantalla LCD que usa este módulo.

Recuerda que la dirección es tal cual la manda, por lo que en mi caso es 0x3F. Es esencial copiar tal y como está dicha dirección.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

8 comentarios en “Obtener dirección de módulo I2C para LCD con Arduino”

  1. Pingback: Juego de batalla naval con Arduino, LCD y comunicación serial - Parzibyte's blog - El blog de Luis Cabrera

  2. Pingback: Ejemplo de Arduino y LCD con el módulo I2C - Parzibyte's blog - El blog de Luis Cabrera

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *