actionbrowser.com
Was hier steht, bezieht sich auf Version 1. 6. 5 der IDE. Die Wire-Bibliothek ermöglicht einem Arduino, mit Geräten zu kommunizieren, die das I²C-Protokoll verwenden. Der Vorteil gegenüber der Kommunikation über die serielle Schnittstelle ist, dass über den I²C-Bus mehr als zwei Geräte miteinander kommunizieren können. Selbstverständlich kann man nicht nur spezielle I²C-Geräte, sondern auch mehrere Arduinos an den I²C-Bus anschließen. Jedes am Bus angeschlossene Gerät erhält eine eigene Adresse. Da die Adresse 7 Bit breit ist, können bis zu 112 Geräte an einen I²C-Bus angeschlossen werden (16 der 128 möglichen Adressen sind für Sonderzwecke reserviert). Der I²C-Bus ist eine Entwicklung von Philips (heute NXP Semiconductors). Wer mehr darüber wissen möchte, sollte sich den entsprechenden Eintrag in der Wikipedia ansehen. Ab und zu wird der I²C-Bus als Two-Wire-Interface oder TWI bezeichnet. Ein I²C-Bus benötigt zwei Leitungen: SCL für ein Taktsignal und SDA für Daten. Da ältere Arduinos für diese beiden Leitungen keine separaten Anschlüsse haben, verwendet man bei diesen Boards die Leitungen A4 und A5: A4=SDA A5=SCL Der Schaltplan eines aktuellen Arduinos zeigt, dass SDA- und SCL-Anschluss weitergeführte A4- bzw. Mehrere I2C Devices an einem Arduino? - Deutsch - Arduino Forum. A5-Anschlüsse sind.
Üblicherweise hat bei Verwendung eines I2C-Busses jeder Busteilnehmer eine I2C-Adresse, die nur einmalig am Bus vorkommen darf. Was aber tun, wenn sich das nicht vermeiden lässt? Für die Verwendung von zwei oder mehreren Busteilnehmern mit identischen I2C-Adressen bietet sich der 8-kanalige I2C-Multiplexer TCA9548A als Abhilfe an. Über I2C-Kommunikation mit dem Baustein kann jeweils nur ein einzelner I2C-Kanal durchgeschaltet werden, alle anderen Kanäle sind während dieser Zeit hochohmig. So können z. B. mit einem TCA9584A hintereinander bis zu 8 Sensoren mit identischer I2C-Adresse abgefragt werden. Textausgabe mit LCD 20x4. Der TCA9584A selbst hat 3 Adresseingänge (A0-A2), so dass bis zu 8 TCAs angesprochen und daher bis zu 8 x 8 = 64 Busteilnehmer mit identischer I2C-Adresse abgefragt werden können. Aber wann oder wofür wird denn das benötigt? Ich selbst habe einmal TCAs für den Anschluss von mehreren BME280-Sensoren verwendet, um die Messergebnisse für Luftdruck und Luftfeuchtigkeit zu vergleichen. Beim BME280 kann man nämlich nur zwischen zwei möglichen I2C-Adressen wählen.
Da ich in letzter Zeit viel mit dem I2C Display gebastelt habe und damals den Beitrag I2C LCD Modul mit 20×4 Zeichen nie wirklich weitergeführt habe, wollte ich in diesem HowTo zeigen, wie einfach man mit I2C LCD und Arduino eine kleine Visualisierung zusammenbauen kann. I2C Bus, Verkabelung und Adresse Kurz zum I²C Bus: Dieser benötigt immer zwei Signalleitungen Takt SCL und Daten SDA. Daher kann man beim Verkabeln nicht viel falsch machen. Aufpassen muss man nur ein wenig auf die z. T. vorgegebene I²C Adresse. Bei vielen Bauteilen lässt sich aber mit Lötbrücken oder über Jumper die Adresse anpassen. Probleme mit Überschneidungen hatte ich aber noch nicht. Ganz genau sollte man auf den richtigen Pegel auf dem I²C Bus achten, der Arduino hat 5V. Die meisten Module arbeiten aber mit 3. Arduino i2c beispiel kit. 3V sowie 5V I²C Pegelspannung zusammen, wenn nicht, wird ein i²C kompatibler Pegelwandler wie z. B. der Adafruit Logic Level Converter – BSS138 benötigt. Wenn alles passt, muss man nur noch die i²C Pins auf dem jeweiligen Arduino finden.
Um in ein bestimmtes Register etwas hineinzuschreiben, wird der Vorgang mit einer Startsequenz (S) und der Angabe der Slaveadresse (wer wird angeschrieben? ) gestartet. Es handelt sich um einen Schreibvorgang, deshalb wird das R/W-Flag auf 0 gesetzt. Die Slaveadresse lautet damit: TLC59116-Adresse (w): 1100_0000 oder 0xC0 bei einem Schreibvorgang und TLC59116-Adresse (r): 1100_0001 oder 0xC1 bei einem Lesevorgang. Adressierung - 7-Bit oder 8-Bit? Arbeitet man mit einem Arduino-UNO und der I 2 C-Bibliothek Wire. h, dann errechnet sich die korrekte Slaveadresse dadurch, dass die 7-Bit Adresse (1100_000 ohne das R/W Bit) des Slave um eine Position nach rechts (in Richtung des R/W Bits) verschoben wird (Abb. 6). Arduino Projekte. Abbildung 6 - Die 7-Bit Adresse wird um eine Position nach rechts verschoben. Wie man Abb. 6 entnehmen kann, wird aus der Slaveadresse 0xC0 (dezimal: 192) durch die Verschiebung 0x60 (dezimal: 96). Bei der Programmiersoftware ist zu prüfen, ob bei einer I 2 C-Adressierung die 7-Bit Adresse ohne das R/W-Bit oder die 8-Bit Adresse mit R/W-Bit gemeint ist und dann entsprechend dem oben Gesagten zu verfahren.