I2C- Und Arduino-Schnittstelle

Inhaltsverzeichnis:

I2C- Und Arduino-Schnittstelle
I2C- Und Arduino-Schnittstelle

Video: I2C- Und Arduino-Schnittstelle

Video: I2C- Und Arduino-Schnittstelle
Video: How I2C Communication Works and How To Use It with Arduino 2024, Kann
Anonim

In diesem Artikel werden wir uns ansehen, was eine I2C-Schnittstelle (ay-tu-si, i-two-tse) ist, welche Funktionen sie hat und wie man damit arbeitet.

I2c-Schnittstelle
I2c-Schnittstelle

Es ist notwendig

  • -Arduino;
  • - digitales Potentiometer AD5171;
  • - Leuchtdiode;
  • - 220 Ohm Widerstand;
  • - 2 Widerstände für 4,7 kOhm;
  • - Anschlussdrähte.

Anleitung

Schritt 1

Das serielle IIC-Kommunikationsprotokoll (auch I2C - Inter-Integrated Circuits genannt) verwendet zwei bidirektionale Kommunikationsleitungen, um Daten zu übertragen, den SDA-Bus (Serial Data) und den SCL-Bus (Serial Clock). Es gibt auch zwei Stromleitungen. Die SDA- und SCL-Busse werden über Widerstände mit dem Power-Bus verbunden.

Es gibt mindestens einen Master im Netzwerk, der die Datenübertragung initiiert und Synchronisationssignale erzeugt. Das Netzwerk hat auch Slaves, die auf Anfrage des Masters Daten übertragen. Jedes Slave-Gerät hat eine eindeutige Adresse, unter der es vom Master adressiert wird. Die Geräteadresse ist im Passport (Datenblatt) angegeben. An einen I2C-Bus können bis zu 127 Geräte angeschlossen werden, darunter auch mehrere Master. Geräte können im laufenden Betrieb an den Bus angeschlossen werden, d.h. es unterstützt Hot-Plugging.

I2C-Anschlussplan
I2C-Anschlussplan

Schritt 2

Arduino verwendet zwei Ports, um an der I2C-Schnittstelle zu arbeiten. In Arduino UNO und Arduino Nano entspricht der analoge Port A4 beispielsweise SDA, der analoge Port A5 entspricht SCL.

Für andere Board-Modelle:

Arduino Pro und Pro Mini - A4 (SDA), A5 (SCL)

Arduino Mega - 20 (SDA), 21 (SCL)

Arduino Leonardo - 2 (SDA), 3 (SCL)

Arduino Due - 20 (SDA), 21 (SCL), SDA1, SCL1

Zuordnen von Arduino-Pins zu SDA- und SCL-Bussen
Zuordnen von Arduino-Pins zu SDA- und SCL-Bussen

Schritt 3

Um den Datenaustausch mit Geräten über den I2C-Bus zu erleichtern, wurde für den Arduino eine Standardbibliothek "Wire" geschrieben. Es hat folgende Funktionen:

begin (Adresse) - Initialisierung der Bibliothek und Verbindung zum I2C-Bus; wird keine Adresse angegeben, gilt das angeschlossene Gerät als Master; 7-Bit-Adressierung wird verwendet;

requestFrom () - wird vom Master verwendet, um eine bestimmte Anzahl von Bytes vom Slave anzufordern;

beginTransmission (Adresse) - der Beginn der Datenübertragung zum Slave-Gerät an einer bestimmten Adresse;

endTransmission () - Beendigung der Datenübertragung zum Slave;

write() – Schreiben von Daten vom Slave als Reaktion auf eine Anfrage;

available() - gibt die Anzahl von Informationsbytes zurück, die zum Empfangen vom Slave verfügbar sind;

read() - ein vom Slave zum Master oder vom Master zum Slave übertragenes Byte lesen;

onReceive () - gibt die Funktion an, die aufgerufen werden soll, wenn der Slave eine Übertragung vom Master empfängt;

onRequest () - Gibt eine Funktion an, die aufgerufen werden soll, wenn der Master eine Übertragung vom Slave erhält.

Schritt 4

Sehen wir uns an, wie Sie mit Arduino mit dem I2C-Bus arbeiten.

Zuerst bauen wir die Schaltung zusammen, wie in der Abbildung gezeigt. Wir werden die Helligkeit der LED mit dem digitalen 64-Positionen-Potentiometer AD5171 steuern, das mit dem I2C-Bus verbunden ist. Die Adresse, unter der wir uns auf das Potentiometer beziehen, ist 0x2c (44 in Dezimal).

LED-Steuerschaltung mit digitalem Potentiometer und Arduino
LED-Steuerschaltung mit digitalem Potentiometer und Arduino

Schritt 5

Öffnen wir nun eine Skizze aus den Beispielen der Bibliothek "Wire":

Datei -> Samples -> Wire -> digital_potentiometer. Laden wir es in den Arduino-Speicher. Lass es uns einschalten.

Sie sehen, die Helligkeit der LED steigt zyklisch an und erlischt dann plötzlich. In diesem Fall steuern wir das Potentiometer mit dem Arduino über den I2C-Bus.

Empfohlen: