LCD Display mit I2C-Anschluss ansteuern
Erstellt von Niclas Lüth
Benötigtes Material
- Arduino Uno
- USB-Kabel für den Arduino
- I2C Display
- 4x MW-Kabel
Benötigte Software
- Bibliothek LiquidCrystal I2C von Marco Schwartz oder Frank de Brabander
Als PDF
Beschreibung
Mit einem LCD kann man Buchstaben und Nummern darstellen. Man kann zum
Beispiel Messwerte oder auch den Zustand in dem sich der Arduino
befindet anzeigen lassen (“fahre vorwärts” / “fahre rückwärts”). Der I2C
Bus (Anschlussschnittstelle) ermöglicht eine simple Verkabelung im
Gegensatz zu einem größeren herkömmlichen Display. Außerdem lässt sich
auf der Rückseite mittels eines Drehreglers der Kontrast einstellen.
Verkabelung
Code
#include <LiquidCrystal_I2C.h> // LiquidCrystal_I2C Bibliothek einbinden.
#include <Wire.h> // Wire Bibliothek einbinden.
// Bestimmung des Displays:
LiquidCrystal_I2C lcd(0x3f, 16, 2); // HEX-Adresse 0x3f, 16 Zeichen in 2 Zeilen.
// LiquidCrystal_I2C lcd(0x3f, 20, 4); // Für ein LCD mit 20 Zeichen in 4 Zeilen.
// Bei Problemen schaue ins FAQ.
void setup() {
lcd.init(); // Im Setup wird der LCD gestartet.
lcd.backlight(); // Hintergrundbeleuchtung einschalten.
// ( lcd.noBacklight(); schaltet die Beleuchtung aus).
}
void loop() {
lcd.setCursor(0, 0); // Legt die Position des ersten Zeichens fest.
// (0,0) bedeutet das erste Zeichen in der ersten Zeile.
lcd.print("Ich bin ein");
lcd.setCursor(0, 1); // (0,1) bedeutet das erste Zeichen in der zweiten Zeile.
lcd.print("Arduino!");
}
Aufgaben
Beschreibe, was der Code tut!
Es wird ein lcd Objekt angelegt. Das Display im Setup wird initialisiert
und eingeschaltet und die Zeichenpositionen für die Ausgabe angegeben.
Ändert die Ausgabe um in “Hallo” “ihr wissbegierigen”.
Die LED leuchtet bei dem Zeichen “1” und geht aus beim Zeichen “0”. Bei
allen anderen passiert nichts mit der LED.
Warum würde eine Fehlermeldung bei den beiden Ausgaben auftreten?
“Herzlich Willkommen” “ihr wissbegierigen!”
Man würde hierbei eine Fehlermeldung erhalten, da der LCD-Display nur 16
chars, also Zeichen, pro Zeile ausgeben kann, es hier aber deutlich mehr
sind.
Häufige Fragen und Probleme
Mein Display leuchtet aber zeigt nichts an, wieso?
Es gibt je nach Display unterschiedliche I2C Module, die auf der
Unterseite angelötet sind.
Überprüfe anhand der folgenden Bilder ob du in der 5. Zeile des
Codes die richtigen Angaben gemacht hast.
Wurde die Library korrekt eingebunden? Siehe PROGRAMM
Mein Display leuchtet nicht!
- Ist die Verkabelung korrekt ? VCC darf nicht an 3,3V angeschlossen
werden (zu wenig Energie)
- Kabel überprüft? Vielleicht hat eines der 4 MW Kabel einen Defekt.
Tauscht alle Kabel einmal aus.
- Funktioniert es, prüft anschließend jedes einzelne Kabel, um das
Defekte zu finden.
Mein Display zeigt Zeichen an, die da nicht hin sollen!
- Soll das Display verschiedene Dinge hintereinander anzeigen? Wird
mit dem Befehl lcd.print(“12345”); die Zeichen “12345” angezeigt und
anschließend lcd.print(“abc”); verwendet, zeigt das Display nun
“abc45” an, da für die 4. und 5. Stelle kein neuer Wert angegeben
wurde. Um dies zu umgehen, kann man zwischendurch mit dem Befehl
lcd.clear(); das Display leeren.
Mein Programm zeigt immer einen Fehler wenn ich den Code übertragen möchte?
Port und Board im Programm überprüft?