Arduino I²C Scanner – Sketch und Anleitung

Arduino I2C Scanner

Bei der Verwendung von I²C Modulen und Sensoren kann es vorkommen, dass der jeweilige Hersteller des Geräts die interne I²C Adresse nicht angibt bzw. nicht veröffentlicht. Es können dementsprechend schwerwiegende Probleme auftreten wenn die Sensor-Adresse nicht bekannt ist oder auf die falsche Adresse geschrieben wird. Mit einem Arduino I²C Scanner Sketch kann diese Frage jedoch schnell behoben werden.

I²C Pins verschiedener Arduino Geräte

Der I²C Bus besteht aus zwei Leitungen, welche als Serial Data (SDA) und Serial Clock (SCL) bezeichnet werden. Wie der Name bereits vermuten lässt, werden die entsprechenden Daten über die SDA Verbindung transferiert. Währenddessen gibt die SCL Verbindung die passende Taktrate vor und bestimmt somit die Datenrate.

Viele Arduino Modelle nutzen jedoch unterschiedliche GPIO-Pins für diese beiden Verbindungen:

Arduino GerätSDASCL
Arduino UNOA4A5
Arduino NanoA4A5
Arduino Mega25602021
Wemos D1 MiniD2D1
Node MCUD2D1

Arduino I²C Scanner

Sketch

// https://iotspace.dev/arduino-i2c-scanner-sketch-und-anleitung/
// Arduino I2C Scanner
// Baudrate 115200

#include <Wire.h>

void setup()
{
  Wire.begin();
  Serial.begin(115200);
  delay(500);
  Serial.println("\n=== I2C Scanner ===");
}

void loop()
{
  byte error, address;
  int nDevices;
  Serial.println("Starte Scanvorgang");
  nDevices = 0;
  
  for (address = 1; address < 127; address++ )
  {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C Gerät gefunden - Adresse: 0x");
      if (address < 16)
        Serial.print("0");
      Serial.print(address, HEX);
      Serial.println("");
      nDevices++;
    }
    else if (error == 4)
    {
      Serial.print("Unbekannter Fehler an Adresse: 0x");
      if (address < 16)
        Serial.print("0");
      Serial.println(address, HEX);
    }
  }
  if (nDevices == 0)
    Serial.println("Keine I2C Geräte gefunden\n");
  else
    Serial.println("Scanvorgang Abgeschlosse\n");

  delay(10000);
}

Ausgabe

Die Ausgabe des seriellen Monitors der Arduino IDE zegt nun das angeschlossene Gerät mit der entsprechenden I2C Adresse. Im folgenden Beispiel wurde ein GY-302 Lichtintensitätssensor  verwendet.

Arduino I²C Scanner - Serielle Ausgabe
I2C Scanner – Serielle Ausgabe

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert