Comprobado. Este código puede utilizarse para identificar la dirección I2C de cada dispositivo conectado a ese bus. Muy útil cuando la desconocemos y necesitamos emplearla en nuestros programas. Bastará conectar a los pines
SDA y
SCL del Arduino los homólogos del dispositivo y cargar este programa en el Arduino: Por el terminal serie nos aparecerá su dirección I2C.
- i2c_busca_dir.ino
#include <Wire.h>
void setup() {
// Habilitación de comunicaciones
Serial.begin (9600); // Habilitamos puerto serie a 9600 baudios
while (!Serial) {}; // Esperamos a que el puerto serie se conecte
Wire.begin(); // Habilitamos bus I2C
delay (2000); // Espera prudencial para encender dispositivos I2C
// Búsqueda de dispositivos I2C
Serial.println ();
Serial.println ("Escaneando direcciones I2C...");
byte contador = 0; // Reseteamos el contador de dispositivos conectados
// Bucle de búsqueda
for (byte direccion = 1; direccion < 120; direccion++){
// Petición de transmisión a esa dirección
Wire.beginTransmission (direccion);
if (Wire.endTransmission () == 0){
// Existe un dispositivo con esa dirección
Serial.print ("Encontrada dirección: ");
Serial.print (direccion,DEC);
Serial.print (" (0x");
Serial.print (direccion,HEX);
Serial.println (")");
contador++; // Actualizamos numero dispositivos encontrados
} // Final de dispositivo encontrado
} // Final del bucle de búsqueda de dispositivos
Serial.println ("Búsqueda finalizada.");
Serial.print ("Encontrados ");
Serial.print (contador,DEC);
Serial.println (" dispositivo(s).");
} // Final del setup
void loop() {} // Final del loop