LCD Display mit I2C-Anschluss ansteuern

Erstellt von Niclas Lüth
Benötigtes Vorwissen
Benötigtes Material
  • Arduino Uno
  • USB-Kabel für den Arduino
  • I2C Display
  • 4x MW-Kabel
Benötigte Software
  • Bibliothek LiquidCrystal I2C von Frank de Brabander
Als PDF
PDF-Download
Arbeitsblatt
PDF-Download erweitert
Erweitertes Arbeitsblatt

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

I2C DisplayArduino
GNDGND
VCC5V
SDAA4
SCLA5
Schaltplan

Schaltplan

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.

    I²C-Modul mit rot markierten Lötstellen. HEX-Adresse 0x3F

    I²C-Modul mit rot markierten Lötstellen. HEX-Adresse 0x3F

  • 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?

Das Material und dessen Inhalte sind - sofern nicht anders angegeben - lizenziert unter der Creative Commons Lizenz CC BY-NC-SA 4.0 (für den vollständigen Lizenztext siehe https://creativecommons.org/licenses/by-sa/4.0/legalcode )