Controlar una pantalla LCD I²C con Arduino

FunduinoÚltima actualización el

Text und Messwerte mit nur vier Leitungen anzeigen

Ein LCD zeigt Messwerte, Menüs oder Statusmeldungen an – auch wenn kein Computer am Arduino hängt. Mit dem angelöteten I²C-Modul brauchst du dafür nur vier Leitungen.

In dieser Anleitung findest du die richtige I²C-Adresse, installierst die Bibliothek, bringst einen ersten Text aufs Display und zeigst zum Schluss einen Sensorwert an.

Das I²C-LCD an einem Funduino UNO R3 in der älteren Version

Das I²C-LCD

Mit einem LCD zeigst du Buchstaben und Ziffern an – Messwerte, Menüs oder Statusmeldungen, auch wenn kein Computer am Arduino hängt.

Beim I²C-LCD ist auf der Rückseite ein I²C-Modul angelötet. Dadurch brauchst du statt vieler Leitungen nur vier. Außerdem sitzt auf dem Modul ein Drehregler, mit dem du den Kontrast einstellst.

Das I²C-LCD an einem Funduino UNO R3 in der älteren Version

Die I²C-Adresse

Je nach Display ist ein anderes I²C-Modul verbaut. Die Anleitung funktioniert mit allen, aber die Adresse kann abweichen und muss im Sketch stimmen. Üblich sind 0x27 und 0x3F. Zeigt dein Display nichts an, probier die andere Adresse aus.

  • Modul ohne Lötstellen: feste Adresse, meist 0x27.
  • Modul mit Lötstellen: meist 0x3F, über die Lötstellen veränderbar.

Mehr zu I²C-Adressen und wie du sie ausliest, steht in der Anleitung Zwei I²C-Displays gleichzeitig am Arduino.

Im Artikel heißen die Lötstellen „A1-A3“. Auf dem Modul sind sie mit A0, A1 und A2 beschriftet. Der Verweis auf die Anleitung zu zwei I²C-Displays ist im Artikel nicht verlinkt.

I²C-Modul ohne Lötstellen mit fester Adresse
I²C-Modul mit rot markierten Lötstellen zur Adressänderung
1 / 2

Die Verkabelung

Am I²C-Modul gibt es nur vier Kontakte:

  • VCC an 5V
  • GND an GND
  • SDA an A4
  • SCL an A5

Am Arduino MEGA2560 haben SDA und SCL eigene Pins: 20 und 21.

In der Bauteilliste führt der Link „1* I2C LCD Display“ auf ein Steckbrett, nicht auf ein Display. Die Bildunterschrift zum MEGA nennt die Pins „SDA und SDL“ – gemeint ist SCL.

Das I²C-LCD am Arduino MEGA2560 mit SDA an Pin 20 und SCL an Pin 21

Die Bibliothek installieren

Für das I²C-LCD brauchst du die Bibliothek „LiquidCrystal I2C“. Sie ist nicht vorinstalliert, du findest sie im Bibliotheksverwalter der Arduino IDE unter dem Namen „LiquidCrystal I2C by Marco Schwartz“. Wie das Installieren im Einzelnen geht, zeigt die Anleitung Hardware und Software.

Die Bibliothek LiquidCrystal I2C im Bibliotheksverwalter der Arduino IDE

Das Programm

Im Sketch legst du fest, um welches Display es sich handelt: Adresse, Zeichen pro Zeile und Zeilen. Für ein 16×2-Display mit Adresse 0x27 heißt das lcd(0x27, 16, 2), für ein vierzeiliges lcd(0x27, 20, 4).

Mit setCursor() bestimmst du, wo der Text beginnt – (0, 0) ist das erste Zeichen der ersten Zeile, (0, 1) das erste Zeichen der zweiten.

Text auf dem I²C-LCD
#include <Wire.h> // Wire Bibliothek einbinden
#include <LiquidCrystal_I2C.h> // Vorher hinzugefügte LiquidCrystal_I2C Bibliothek einbinden
LiquidCrystal_I2C lcd(0x27, 16, 2); //Hier wird festgelegt um was für einen Display es sich handelt. In diesem Fall eines mit 16 Zeichen in 2 Zeilen und der HEX-Adresse 0x27. Für ein vierzeiliges I2C-LCD verwendet man den Code "LiquidCrystal_I2C lcd(0x27, 20, 4)"
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);//Hier wird die Position des ersten Zeichens festgelegt. In diesem Fall bedeutet (0,0) das erste Zeichen in der ersten Zeile.
lcd.print("Funduino GmbH");
lcd.setCursor(0, 1);// In diesem Fall bedeutet (0,1) das erste Zeichen in der zweiten Zeile.
lcd.print("Viel Erfolg!");
}

Erweiterung: einen Messwert anzeigen

Wie am einfachen LCD kannst du auch am I²C-LCD Messwerte anzeigen. Im Beispiel hängt ein Feuchtigkeitssensor an A0. Der Sketch liest den Wert alle halbe Sekunde und schreibt ihn in die zweite Zeile.

Wird der Messwert kürzer – etwa von 1000 auf 999 –, bleibt die letzte Ziffer der alten Zahl stehen und das Display zeigt 9990. Abhilfe: vor der Ausgabe die Zeile mit Leerzeichen überschreiben oder lcd.clear() aufrufen.

Messwert auf dem I²C-LCD anzeigen
#include <Wire.h> // Wire Bibliothek einbinden
#include <LiquidCrystal_I2C.h> // Vorher hinzugefügte LiquidCrystal_I2C Bibliothek einbinden
LiquidCrystal_I2C lcd(0x27, 16, 2); //Hier wird festgelegt um welches Display es sich handelt. Die HEX-Adresse 0x27 ist eine Standartadresse für LCD mit einem einfachen I²C-Modul auf der Rückseite. Wenn das I²C Modul Lötstellen zur Veränderung der HEX-Adresse aufweist, ist die Standartadresse "0x3F". In diesem Fall handelt es sich um ein LCD mit 16 Zeichen in 2 Zeilen (16,2). Für ein vierzeiliges I2C-LCD verwendet man den Code "LiquidCrystal_I2C lcd(0x27, 20, 4)".
int messwert=0;
void setup()
{
lcd.init(); //Im Setup wird der LCD gestartet
lcd.backlight(); //Hintergrundbeleuchtung einschalten (lcd.noBacklight(); schaltet die Beleuchtung aus).
}
void loop()
{
messwert=analogRead(A0); // Der Messwert vom Analogen Eingang A0 soll ausgelesen, und unter der Variablen „messwert“ gespeichert werden.
lcd.setCursor(0, 0); //Hier wird die Position des ersten Zeichens festgelegt. In diesem Fall bedeutet (0,0) das erste Zeichen in der ersten Zeile.
lcd.print("Messwert: ");
lcd.setCursor(0, 1); // In diesem Fall bedeutet (0,1) das erste Zeichen in der zweiten Zeile.
lcd.print(messwert);
delay(500);
}
Calificar la guía

Comentarios

Haz una pregunta o comparte tu experiencia

Schreib uns, wenn etwas nicht funktioniert. Nenne dabei dein Board und die Fehlermeldung.

Revisamos cada comentario antes de publicarlo. Tu dirección de correo electrónico permanece con nosotros.