Hello World auf einem I2C LCD-Display
Für dieses Projekt basiererend auf unserem Arduino Starterkit benötigen wir folgende Komponenten:
Benötigte Software:
- Arduino Software
- NewliquidCrystal Bibliothek Bibliothek
- Wire Bibliothek
Anschließen
Das Anschließen des Displays erfolgt über einen TWI / I2C Controller, der in unserem Starterkit bereits fest an den 16 Pins des Displays verlötet ist. Die beiden großen Vorteile des Controllers sind das integrierte Potentiometer und die Reduzierung des Verkabelungsaufwands auf nur 4 Anschlüsse:
- GND zu GND (schwarzes Kabel)
- VCC zu +5V (rotes Kabel)
- SDA zu A4 (graues Kabel)
- SCL zu A5 (violettes Kabel)
Beim Arduino UNO R3 bzw. allen Microcontrollern mit ATMega328 Chip sind die Pins A4 und A5 direkt mit dem I2C-Bus verbunden (SDA und SCL).
Das Display wird beleuchtet sobald der Arduino in Betrieb ist. Zum Einstellen des Displays muss man lediglich mit einem Schraubendreher am Potentiometer des Controllers drehen.
Anschluss am Arduino Mega2560
Beim Mega2560 Board gibt es extra ausgeführte Pins für den I2C Bus: Pin 20 und Pin 21 (SDA und SCL).
Programmieren
Der Sketch ist dank den eingebunden Bibliotheken sehr einfach gehalten, die meisten Funktionen sind im Sketch auf Deutsch kommentiert und können dadurch leicht angepasst werden.
Zum Hinzufügen der Bibliotheken laden wir die beiden .zip-Dateien (Links weiter oben) herunter und navigieren in der Arduino Software zu Sketches -> Bibliothek einbinden -> .ZIP-Bibliothek hinzufügen...
Bibliotheken sind Code-Sammlungen um Sensoren, Module oder Funktionen wesentlich einfacher programmieren zu können.
In unserem Beispiel vereinfacht die Wire Library die Kommunikation mit dem I2C Controller während die LiquidCrystal Library die einfache Anzeige von Zeichen auf dem Display ermöglicht, ohne einzelne Pixel ansprechen zu müssen.
Bei der I2C-Adresse muss man lediglich den verwendeten Chip beachten:
Ist das Modul mit einem PCF8574T Chip bestückt, lautet die Adressenlage 0x27 (für alle 3 Adress-Pins offen) bis 0x20 (alle 3 gebrückt).
Ein PCF8574AT Chip hat die Adressenlage 0x3F bis 0x38.
Dies ist die zu verändernde Zeile:
#define I2C_ADDR 0x27 // Adresse des Displays hier eingeben
In diesem Beispiel werden drei Bibliotheken eingebunden die wir hinzugefügt haben:
Als nächsten laden wir den Hello World Sketch auf unser Arduino und schon können wir unser Display ansteuern.
I2C - Buskommunikation über A4 und A5 statt SCL und SDA?
Hallo,
ich kann leider nicht nachvollziehen wieso die SCL und SDA Pins des Display nicht mit den SCL und SDA Pins des Arduino Boards verbunden werden, sondern an A4 und A5.
Und vorallem verstehe ich nicht wo die Analogen Pins zu SCL und SDA umkonfiguriert wurden?
Kann ich jetzt trotzdem statt an A4 und A5 meinen Display an SCL und SDA anschließen und es funktioniert?
Brauche ich keine Pullup-Widerstände in der Busleitung oder ist dies nur bei einer höheren Anzahl an Teilnehmern im Bus nötig?