Le programme suivant est un scanner I2C pour Arduino. Il tente de lire une donnée (un octet) à chaque adresse I2C inclue dans l’intervalle [0:255]. Les adresses des modules esclaves qui répondent sont affichées dans le terminal.
#include
void setup() {
//Initialize serial and wait for port to open:
Serial.begin(115200);
// prints title with ending line break
Serial.println("I2C scanner ::: www.lucidarme.me");
}
void loop()
{
// Test each I2C address
for (int i=0;i<256;i++)
{
// Request data (read one byte)
Wire.requestFrom(i, 1);
// If slave answers, a device is found
if (Wire.available())
{
// Display address
Serial.print(i,DEC);
Serial.print("\t0x");
Serial.print(i,HEX);
Serial.print("\t");
Serial.print("0b");
Serial.print(i,BIN);
Serial.print("\t");
Serial.println("Device found");
}
// delay(100);
}
Serial.println("End of scan");
while (1);
}