Nr.02 – I²C Display

Inhaltsverzeichnis

Anleitung zum LCD Display mit I2C Anschluss

Mit einem LCD-Display kann man Buchstaben und Ziffern darstellen. Dies ist in vielen Anwendungen nützlich, zum Beispiel, um Messwerte oder auch Menüs darzustellen. Mithilfe des LCD lassen sich aber auch Daten darstellen, wenn kein Computer am Arduino-Mikrocontroller angeschlossen ist.

Das LCD Modul mit angelötetem I2C Bus ermöglicht die Verwendung eines LCD Moduls mit einer einfachen Verkabelung. Dies ist bei komplexeren Projekten besonders vorteilhaft. Ein weiterer Unterschied zum normalen LCD-Display besteht darin, dass sich auf der Rückseite des Displays ein Drehregler befindet, mit dem der Kontrast des LCD reguliert werden kann.

I2C LCD Arduino Aufbauplan
Das I²C Display am Funduino UNO R3 (alte Version)

Hinweise zur Ansteuerung der I2C-Displays

In diesem Beispiel:
I²C-Modul ohne Lötstellen, mit fester HEX-Adresse 0x27, HEX-Adresse kann abweichen!

I2C LCD ohne Lötbrücke

I²C-Modul mit rot markierten Lötstellen. Standart-HEX-Adresse 0x3F (kann abweichen!), veränderbar durch die Lötstellen A1-A3)

Verkabelung

Die Verkabelung ist sehr simpel. Am I2C LCD Modul sind nur vier Kontakte vorhanden. GND wird mit dem GND Kontakt am Mikrocontroller verbunden. VCC mit dem 5V Kontakt am Mikrocontroller, SDA mit dem analogen Eingang A4 und SCL mit dem analogen Eingang A5.

Verkabelung am MEGA2560 R3

Bei dem MEGA2560 R3 Mikrocontroller gibt es für die SDA- und SCL-Kontakte eigene Eingänge auf dem Board unter 20 und 21.

Die rote Markierung Kennzeichnet die SDA und SDL Pins am MEGA2560 R3

Installation der Bibliothek "LiquidCrystal I2C"

Um mit dem I²C LCD Modul arbeiten zu können, benötigt man eine Library. Wir verwenden in dieser Anleitung die „LiquidCrystal I2C“ Library. Die Library kann über die Bibliotheksverwaltung der Arduino-Software hinzugefügt werden. Der angezeigte Name in der Bibliotheksverwaltung lautet „LiquidCrystal I2C by Marco Schwartz“.

Bibliotheksverwaltung der Arduino IDE

Der Programmcode

#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 des Programmcodes

Mit dem I2C LCD Modul können, wie mit dem einfachen LCD Modul, auch Messwerte angezeigt werden.

Hier ein Beispielcode, bei dem ein Feuchtigkeitssensor an Pin A0 angeschlossen wurde:

#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);
} 

Funduino - Dein Onlineshop für Mikroelektronik

  • Dauerhaft 10% Rabatt für Schüler, Studenten und Lehrkräfte
  • Mehr als 3.500 Artikel sofort verfügbar!
  • Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.
SALE