Der I²C-Bus (Inter Integrated Circuit) wurde ursprünglich von Philips entwickelt, er sollte die Kommunikation mit einem Controller (dem Arduino) und den verschiedenen Peripherie-Geräten ermöglichen.
Wenn mehrere Peripherie-Geräten verwendet werden, können die Anschlüsse SCL und SDA auf das Steckbrett hinaus geführt werden und die Peripherie-Geräten werden an den horizontalen Pins angeschlossen.
Beispiel Arduino UNO

Der dazugehörige Schaltplan:

Der I²C-Bus kommt mit zwei Datenleitungen aus:
- die Taktleitung SCL (Serial Clock) ⇒ A5
- die Datenleitung SDA (Serial Data) ⇒ A4

Statt A4 (SDA) und A5 (SCL) kannst du auch die mit SCL und SDA beschrifteten Pins verwenden.
I²C-Pins anderer Mikrocontroller
I²C-Pins festellen
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial);
delay(1000);
Serial.print("SDA: ");
Serial.println(SDA);
Serial.print("SCL: ");
Serial.println(SCL);
}
void loop()
{
// Bleibt leer, läuft nur einmal
}
Jedes Bauteil, das mit I2C angesteuert wird, hat eine eigene Adresse.
Diese kannst du mit einem Programm herausfinden:
#include "Wire.h"
void setup()
{
Wire.begin();
Serial.begin(9600);
delay(500);
Serial.print("I2C Scanner");
}
void loop()
{
byte Fehler, Adresse;
int Geraete = 0;
Serial.println("Starte Scanvorgang");
for (Adresse = 1; Adresse < 127; Adresse++ )
{
// Übertragung starten
Wire.beginTransmission(Adresse);
// wenn die Übertragung beendet wird
Fehler = Wire.endTransmission();
if (Fehler == 0)
{
Serial.print("I2C Gerät gefunden - Adresse: 0x");
if (Adresse < 16) Serial.print("0");
Serial.print(Adresse, HEX);
Serial.println("");
Geraete++;
}
}
if (Geraete == 0) Serial.println("Keine I2C Geräte gefunden\n");
else Serial.println("Scanvorgang abgeschlossen");
delay(10000);
}


Letzte Aktualisierung: