Mit dem Arduino alle angeschlossenen I2C / TWI Adressen scannen

Sie haben ein I²C Modul und wissen nicht auf welcher I2C-Adresse das Modul Befehle empfängt und versendet? Oft müssen Sie in diesem Fall Produktbeschreibungen oder Datenblätter durchsuchen. Es besteht jedoch auch die Möglichkeit alle Adressen in Sekunden mit dem Arduino abzufragen und eine Übersichtliche Ausgabe der belegten Adressen zu erhalten.

Die Pinbelegung der einzelnen Entwicklungsboards ist dabei:

Board I2C / TWI pins
Uno, Ethernet A4 (SDA), A5 (SCL)
Mega2560 20 (SDA), 21 (SCL)
Leonardo 2 (SDA), 3 (SCL)
Due 20 (SDA), 21 (SCL), SDA1, SCL1

Der benötigte Programmcode zum Adressen-scannen ist der folgende:

// I2C Scanner

#include <Wire.h>

void setup() {
 Serial.begin (9600);

 while (!Serial) 
 {
 }

 Serial.println ();
 Serial.println ("Start des I2C scannings...");
 byte count = 0;
 
 Wire.begin();
 for (byte i = 8; i < 120; i++)
 {
 Wire.beginTransmission (i);
 if (Wire.endTransmission () == 0)
 {
 Serial.print ("Gefundene Adresse: ");
 Serial.print (i, DEC);
 Serial.print (" (0x");
 Serial.print (i, HEX);
 Serial.println (")");
 count++;
 } 
 } 
 Serial.println ("Fertig.");
 Serial.print ("Anzahl gefundene Module: ");
 Serial.println (count, DEC);
} 

void loop() {}

Nach Upload des Codes muss das jeweilige I2C Modul mit den SDA und SCL-Pins des Entwicklungsboards verbunden werden.

I2C im Arduino mit Beispiel

Daraufhin muss ein Serieller Monitor geöffnet werden und die Kommunikation mit dem Arduino aufgenommen werden. Durch eine Betätigung des Resetknopfes am Arduino wird nun der Scanvorgang erneut durchgeführt und die Resultate im Seriellen Monitor ausgegeben.

I2C im Arduino mit Beispiel