AdSense

Mittwoch, 23. April 2014

Arduino - I2C Scanner

(English version) Ich habe schon öfters das Problem gehabt, dass ich ein cooles I2C-Gerät hatte, leider aber keine Ahnung hatte, welche Adresse es hatte. Das kann frustrierend sein, da die Adresse meistens als bekannt vorausgesetzt wird. Daher möchte ich heute ein simples Programm vorstellen, welches alle verfügbaren I2C-Geräte scannt.

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.