Este pequeño programa para Arduino buscará entre las direcciones del bus i2c en busca de componentes conectados que respondan, oficiando asi de escáner de bus i2c.
Me ha ocurrido ya un par de veces que al adquirir un componente que se conecta al bus de datos i2c, la dirección explicitada en la documentación no es correcta.
Pues bien, la solución es cargar momentáneamente este pequeño programa y descubrir asi donde se esconde el componente en cuestión.
Indudablemente un ahorro de tiempo importante, a mi me ha resultado útil y por eso quería compartirlo con ustedes para que lo tengan presente:
Código del Scanner de bus i2c
Simple en su funcionamiento, no necesita mayor detalle este pequeño scanner de i2c:
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(115200);
while (!Serial); // Esperamos a que el serial se active
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Escaneando...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("Componente I2C encontrado en 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Error en 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No encontré nada en I2C\n");
else
Serial.println("TERMINADO\n");
delay(5000);
}
Al ejecutarlo, el programa les listará las direcciones donde encontró componentes i2c.