Beschreibung Mit dem IC MCP23017 von Microchip lässt sich Arduino sehr einfach um 16 I/O Kanäle über die I2C Schnittstelle erweitern. Dieses IC besitzt drei Adresspins mit dessen Hilfe bis zu acht ICs an einer Bus- leitung angebunden werden können. Somit kann Arduino insgesamt um bis zu 128 I/O Kanäle erweitert werden. Testaufbau Pinbelegung MCP23017 Spezifikation Arbeitsspannung: 1. 8V - 5. 5V 16-bit I/O (Eingang als Defaulteinstellung) Hochgeschwindigkeit I2C Interface: 100 kHz, 400 kHz, 1. 7MHz Drei Adresspins erlauben bis zu acht ICs an einer Busleitung zu adressieren Zwei Interrupt Ausgänge Arduino Beispielcode Beispielcode: Arduino Library: Adafruit_MCP23017. Arduinospielwiese. h Links MCP23017 Datenblatt Tutorial: Maximising your Arduinos I/O ports Forumeintrag
(3kB) Arduino Quellcode mit einem Beispiel zur I2C Analogkarte mit PCF8591 Baustze knnen Sie gnstig in unserem Onlineshop in der Rubrik "I2C-Komponenten" bestellen.
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. Arduino i2c beispiel circuit. 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. A5-Anschlüsse sind.
Eventuell liegt ein Arduino Nano mit CH340/CH341 Chip vor. Gibt man das in die Internetsuche des Vertrauens ein, wird man schnell fündig. Das Problem ist bekannt. Auch unter Linux oder Mac OS können besagte Problem auftreten. Wird der Arduino erkannt, erscheint er unter Windows als /COMx (anstelle des x erscheint dann eine Zahl) und unter Linux und Mac OS als /dev/tty bzw. /dev/usb. Abbildung 3: Arduino IDE - Portauswahl Bibliothekenverwaltung Es stehen zahlreiche Bibliotheken zur Verfügung. Arduino i2c beispiel command. Das bedeutet, dass fertige Programmfunktionen eingebunden und genutzt werden können. Die Arduino IDE bietet das auf verschiedenen Wegen an. Zum einen kann man im Menüpunkt "Werkzeuge" unter "Bibliotheken verwalten…" bzw. STRG+UMSCH+I aus dem Online Repository zahlreiche Bibliotheken zu installieren. Möchte man z. B. ein LCD-Display nutzen, kann man die LiquidChrystal Library installieren und hat so auf einfache Weise passende Funktionen zur Verfügung sowie Beispielcode, der anschließend über das Menü "Datei" und anschließend "Beispiele" erreichbar ist.
TCA9548A-Scanner: Der nachfolgende Sketch scannt alle Kanäle von gefundenen TCA9548A-Bausteinen mit I2C-Adresse von 0x70 bis 0x77 und zeigt diese am Seriellen Monitor an (siehe Bild 2). Es sollten daher am I2C-Bus keine anderen Busteilnehmer mit diesen Adressen vorhanden sein, sehr wohl können aber die Kanäle damit beschaltet sein. So nutzen z. die Sensoren BMP180/280 oder BME280 diesen Adressbereich. Arduino – Wire.h (I²C). Leider kann ich hier keine "ino"-Files hochladen, daher zum Verwenden des Programms "" aus den Dateinamen entfernen und in einem neuen Verzeichnis mit dem Namen "TCA9548A_Scanner" speichern. Bild 2: Ausgabe des TCA9548A-Scanners bei Verwendung mit obigem Testaufbau Folgende Funktionen stehen zur Verfügung: Abfrage, ob der Baustein über I2C ansprechbar ist Festlegen, welche Kanäle mit Busteilnehmern beschaltet sind Setzen des Kanals, der durchgeschaltet werden soll Rücksetzen des durchgeschalteten Kanals Abfrage, welcher Kanal durchgeschaltet ist Die Library kann hier heruntergeladen werden: Sollte die Library jemand verwenden oder testen, würde ich mich über eine Rückmeldung sehr freuen!