I2C (Inter-Integrated Circuit) ist ein serieller Kommunikationsbus zum Anschluss von Peripheriegeräten an Mikrocontroller wie den Arduino. I2C wurde in den 1980er Jahren von Philips Semiconductor entwickelt und ermöglicht den Anschluss mehrerer Peripheriegeräte über nur zwei Leitungen: eine für Daten (SDA) und eine für Takt (SCL).
Jedes Peripheriegerät am I2C-Bus verfügt über eine eindeutige Adresse, sodass der Master individuell mit jedem Slave kommunizieren kann.
Die I2C-Verbindung ist eine Halbduplex-Verbindung. Das bedeutet, dass Daten nicht gleichzeitig abgehört und gesendet werden können. Die durchschnittliche Datenrate der I2C-Verbindung liegt zwischen 100 Kilohertz und 1 Megahertz.
Wie Sie im Diagramm unten sehen können, ist die I2C-Verbindung nicht exklusiv, d. h. ein Master kann mit mehreren Slaves kommunizieren.
Eine Vielzahl elektronischer Komponenten kann über nur zwei Leitungen miteinander kommunizieren:
Datensignal: SDA
Taktsignal: SCL
Um I2C mit einem Arduino-Board zu nutzen, müssen Sie die für die I2C-Kommunikation vorgesehenen Pins kennen. Die Pins variieren je nach Arduino-Modell leicht, sind aber im Allgemeinen folgende:
Arduino Uno: A4 (SDA) und A5 (SCL).
Arduino Mega: 20 (SDA) und 21 (SCL).
Arduino Leonardo: 2 (SDA) und 3 (SCL).
Für das Arduino Uno-Board finden Sie die Pins in der folgenden Abbildung:
Um eine Nachricht an I2C zu senden, müssen Sie zunächst die I2C-Adresse kennen, an die die Nachricht gesendet werden soll. Hier ist das Programm zum Senden von Daten an I2C:
#include <Wire.h>
void setup() {
Wire.begin();
}
void loop() {
Wire.beginTransmission(0x3C);
Wire.write("Hello");
Wire.endTransmission();
delay(500);
}
Hier ist ein Beispiel, mit dem Sie den I2C der Arduino-Karte an der Adresse 0X3C lesen können:
#include <Wire.h>
void setup() {
Wire.begin(0x3C);
Wire.onReceive(receiveEvent);
Serial.begin(9600)
}
void loop() {
delay(100);
}
void receiveEvent() {
while (Wire.available()) {
char c = Wire.read();
Serial.print(c);
}
}
Wenn Sie ein Beispiel für ein Arduino-Projekt mit I2C suchen, können Sie sich unseren Kurs zum RTC-Modul ansehen.
Wenn Sie mehr über andere Kommunikationsbusse erfahren möchten, gibt es UART und SPI.