Donnerstag, 18. Februar 2016

Software I2C

In diesem Post geht es darum, wie man über die Software I2C Bibliothek zwei beliebige Pins des Arduino für eine zusätzliche I2C Verbindungen verwendet.

I2C

I2C, eigentlich I^2C ist ein Protokoll zum Übertragen von Daten zwischen zwei Geräten mit nur zwei Verbindungen: SDA und SCL. SDA ist für die Datenübertragung und SCL für den Takt. Der Arduino hat hardwareseitig eine I2C Verbindung mit SDA an A4 und SCL an A5, welche man über die Wire Bibliothek verwenden kann. 

Wie man die Wire Library zum Nutzen von I2C am Arduino verwendet, habe ich bereits hier erklärt.

Software I2C

Manchmal benötigt man jedoch mehr als eine I2C Verbindung pro Arduino, wozu man die Software I2C Library verwenden (verfügbar im Library Manager unter Sketch > Include Library > Manage Libraries) kann. Diese kann eine "virtuelle" I2C Verbindung an zwei beliebigen Pins des Arduino einrichten, jedoch muss man ein paar Dinge beachten.

Zunächst einmal muss man vor der Verwendung den SDA Pin und den SCL Pin definieren. Dabei kann man nicht die aufgedruckten Arduino Bezeichnungen nehmen, sondern muss die Pins in ihren jeweiligen Ports einsortieren. Die genaue Bezeichnung der Pins und der Ports des Arduino, habe ich bereits hier erklärt. 

Zur Definition muss man erst den Port, und dann den Pin angeben:

Nun wäre digital Pin 2 der SCL Pin, und A0 der SDA Pin.

Außerdem muss man in setup die künstliche I2C Verbindung über i2c_init() starten.
Um eine Verbindung mit einem Gerät zu starten, verwendet man die Funktion i2c_start(), welche man die Adresse des anderen I2C Geräts und den Modus (I2C_WRITE oder I2C_READ mitgeben muss). Beispielsweise sähe das so aus: i2c_start('0x70'|I2C_WRITE);.

Um die I2C Adresse des anderen Arduinos/Geräts herauszufinden, kann man diesen Sketch verwenden. Nun kann man über i2c_write(); etwas schreiben, oder über i2c_read() etwas lesen. Nach erfolgreicher Datenübertragung sollte man über i2c_stop() die Verbindung unterbrechen.

Keine Kommentare:

Kommentar veröffentlichen