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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #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: