In einem früheren Beitrag wurde ein LCD mit 16×2 Zeichen über die herkömmliche Schnittstelle (16 Anschlüsse) gesteuert. Die Verkabelung ist dabei recht aufwendig. Mit dem hier verwendeten Adapter kann dasselbe LCD mit nur 4 Pins per I²C angesprochen werden. Die I²C-Signale werden über den IO-Expander PCF8574 auf die entsprechenden Display-Pins des LCD geroutet.
Den Adapter für das I²C-Protokoll zu verwenden bietet einige Vor- und Nachteile. Ein Nachteil des
I²C-Protokolls ist auf jeden Fall, dass die Adresse 0x27 standardmäßig für den Adapter vergeben ist
und mit anderen Modulen in Konflikt geraten könnte.
Ein Vorteil ist, dass es einen einfachen Jumper gibt, mit dem man die Hintergrundbeleuchtung des LCDs
je nach Bedarf an- oder ausschalten kann. Außerdem kann mit einem kleinen Trim-Potentiometer der
Kontrast des Displays eingestellt werden, es ist also kein separater Potentiometer notwendig.
Die I²C-Adresse des Moduls kann durch die Lötstellen (A0, A1 und A2 auf der Platine) geändert werden. (bisher
nicht ausprobiert; evtl. kann hier der I²C Scanner nützlich sein)
Das LCD und der Adapter werden entweder direkt verlötet oder wie im folgenden Bild auf einem Breadboard zusammengesteckt. Die vier Pins werden laut folgender Tabelle verbunden.
I²C-Adapter | Arduino Uno |
---|---|
VCC | 5V |
GND | GND |
SCL (serial clock) | A5 |
SDA (serial data) | A4 |
Der Einfachheit halber habe ich die Library Arduino-LiquidCrystal-I2C-library verwendet, die viele nützliche Funktionen zur Bedienung des LCDs zur Verfügung stellt. Das folgende Beispiel lässt den Cursor abwechselnd blinken und nicht blinken:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
bool blinking = true;
void setup()
{
lcd.begin();
}
void loop()
{
lcd.cursor();
lcd.clear();
if (blinking) {
lcd.print("No cursor blink");
lcd.noBlink();
} else {
lcd.print("Cursor blink");
lcd.blink();
}
blinking = !blinking;
delay(3000);
}
zurück