Die Funktionsweise ist simpel: Ein Counter zählt von 0 hoch und versucht ein I2C-Gerät anzusprechen. Gelingt dies nicht, so fährt er mit der nächsten Adresse fort. Das sieht dann folgendermaßen aus:
for (int i = 0; i < 120; i++)
{
Wire.beginTransmission(i);
error = Wire.endTransmission();
sprintf(buf, "scan %i - %i",i,error);
lcd.setCursor(0,1);
lcd.print(buf);
if (error == 0)
{
//success!
delay(1000);
}
}
Statt dem lcd.print kann man auch jede beliebige andere Ausgabe benutzen. Sobald ein Gerät gefunden wurde, wird eine Sekunde gewartet, danach wird weiter gescannt.