I²C

Lese­zeit: 2 Minu­ten

Der I²C-Bus (Inter Inte­gra­ted Cir­cuit) wur­de ursprüng­lich von Phil­ips ent­wi­ckelt, er soll­te die Kom­mu­ni­ka­ti­on mit einem Mas­ter (dem Ardui­no) und den ver­schie­de­nen Bau­ele­men­ten (den Slaves) ermög­li­chen.
Wenn meh­re­re Slaves ver­wen­det wer­den, kön­nen die Anschlüs­se SCL und SDA auf das Steck­brett hin­aus geführt wer­den und die Slaves wer­den an den hori­zon­ta­len Pins angeschlossen.

Quel­le: http://​pro​me​tec​.org/​d​i​s​p​l​a​y​s​/​t​h​e​-​i​2​c​-​bus (eige­ne Bearbeitung)

Der dazu­ge­hö­ri­ge Schaltplan:

Der I²C-Bus kommt mit zwei Daten­lei­tun­gen aus:

  • die Takt­lei­tung SCL (Seri­al Clock) → A5 
  • die Daten­lei­tung SDA (Seri­al Data) → A4 

Statt A4 (SDA) und A5 (SCL) kannst du auch die mit SCL und SDA beschrif­te­ten Pins verwenden.

Jedes Bau­teil, das mit I2C ange­steu­ert wird, hat eine eige­ne Adres­se.
Die­se kannst du mit einem Pro­gramm herausfinden:

# include <Wire.h>

void setup()
{
  Serial.begin(9600);
  Wire.begin(); 
  int Anzahl = 0; // Zahl gefundener Geräte

  for (int i = 0; i < 128; i++)
  {
    // Kommunikation mit Gerät(ID=i) testen
    Wire.beginTransmission (i);

    if (Wire.endTransmission () == 0)
    {
      Serial.print ("Geraet gefunden ID 0x");
      Serial.println(i, HEX);
      Anzahl ++;
    }
    delay (10);
  }
  Serial.print ("Gefundene Geraete insgesamt: ");
  Serial.println (Anzahl);
}

void loop()
{
  // bleibt leer, das Programm läuft nuir einmal
}

SPI-Bus 

Letzte Aktualisierung: 22. Nov 2020 @ 18:56