LCD ist die Abkürzung von Liquid Crystal Display.
Einfach gesagt besteht eine LCD-Anzeige meistens aus zwei Glasscheiben, dazwischen mit speziellen Flüssigkeitskristallen und dahinter leuchtet die Hintergrundbeleuchtung. Die Scheiben mit ihren Polfilter, können die schwimmenden Kristalle in der Ausrichtung so ausrichten, das das Hintergrundlicht entweder durchscheint oder abgedeckt wird.
Hier zwei Anschluss Beispiel für ein LCD-Display, das einmal direkt mit dem Arduino verbunden wird und als zweites Beispiel ein LCD-Display mit einer I2C Bus Schnittstelle.
Erstes Beispiel
LCD direkt mit Entwicklungsboard verbinden
In diesem Fall wird eine LCD1602 mit 2 Zeilen und je 16 Zeichen verwendet. Von den 16 Anschlüssen müssen 12 Anschlüsse verdrahtet werden. Auch muss hier bei, auch noch die Hintergrundbeleuchtung mit einem Potentiometer geregelt werden.
Immer vorab das passende Datenblatt des Herstellers nach Gerätenamen, Typ, Funktion, Spannungsversorgung, Auflösung prüfen.
Hardware:
Arduino Uno
LCD1602 (2 Zeilen mit je 16 Zeichen) oder LCD2004 (4 Zeilen mit je 20 Zeichen)
Potentiometer 10 kΩ (Kilo Ohm)
Verdrahtung:
LCD Pin | Bezeichnung | Funktion | Arduino oder Poti | PIN |
---|---|---|---|---|
1 | VSS | Stromversorgung 0V | Arduino | Ground |
2 | VCC oder VDD | Stromversorgung 5V | Arduino | +5V |
3 | V0 | Stromversorgung LCD | Potentiometer | 2 |
4 | RS | Register Select: H:Dateneingang L:Befehlseingang | Arduino | 12 |
5 | R/W | H:Lesen L:Schreiben | Arduino | Ground |
6 | E | Enable Signal | Arduino | 11 |
7 | D(B)0 | Datenbus für 8 Bit Übertragung | Frei | |
8 | D(B)1 | Datenbus für 8 Bit Übertragung | Frei | |
9 | D(B)2 | Datenbus für 8 Bit Übertragung | Frei | |
10 | D(B)3 | Datenbus für 8 Bit Übertragung | Frei | |
11 | D(B)4 | Datenbus für 4 und 8 Bit Übertragung | Arduino | 5 |
12 | D(B)5 | Datenbus für 4 und 8 Bit Übertragung | Arduino | 4 |
13 | D(B)6 | Datenbus für 4 und 8 Bit Übertragung | Arduino | 3 |
14 | D(B)7 | Datenbus für 4 und 8 Bit Übertragung | Arduino | 2 |
15 | A oder LED+ | Hintergrundbeleuchtung | Arduino | +5V |
16 | K oder LED- | Hintergrundbeleuchtung | Arduino | Ground |
Poti Pin | Arduino oder LCD | |||
1 | Hintergrundbeleuchtung | Arduino | +5V | |
2 | Hintergrundbeleuchtung | LCD | V0 | |
3 | Hintergrundbeleuchtung | Arduino | Ground |
Passende Library / Bibliothek suchen und einbinden
- Gehe ins Sketch Menü.
- Drücke Bibliothek einbinden.
- Öffne Bibliotheken verwalten.
- Suche nach LiquidCrystal und installieren.
Quellcode: (Unter Beispiele / Liquid Crystal / zB. HelloWorld)
Das oben im Bild verwendete Skript:
#include <LiquidCrystal.h>
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2); // (20,4) Sollte ein LCD mit 4 Zeilen und je 20 Zeichen zum Einsatz kommen
lcd.setCursor(0, 0); //1. Wert = Cursor Position, 2. Wert = Zeile 1
lcd.print("Prilchen.de");
}
void loop() {
lcd.setCursor(0, 1); //1. Wert = Cursor Position, 2. Wert = Zeile 2
lcd.print(millis() / 1000); //Schreibe Sekunden
}
Im Sketch angeben welche LCD-Variante verwendet wird:
– lcd.begin(16, 2); = LCD mit 2 Zeilen und je 16 Zeichen
oder
– lcd.begin(20, 4); = LCD mit 4 Zeilen und je 20 Zeichen
Zweites Beispiel:
LCD mit I2C Schnittstelle
Mit einem LCD, entweder nachgerüstet oder direkt mit der I2C Schnittstelle verbunden, ist die Verdrahtung mit nur 4 Anschlüssen deutlich einfacher. Auch der Regler (blauer Poti) für die Hintergrundbeleuchtung ist mit an Board.
Nachrüsten mit einem I2C Adapter oder LCD direkt mit Adapter Platine
Verdrahtung:
Die Verdrahtung ist deutlich einfacher.
LCD VCC = 5V
LCD GND = Ground
LCD SDA = A4 oder SDA
LCD SCL = A5 oder SCL
Library:
Hier in der Bibliotheksverwaltung nach LiquidCrystal i2c suchen.
Beispiel-Script aus der Library.:
Diese benötigt noch die I2C Adresse des Display. Eine große Menge an Standard I2C Modul Adresse sind bei https://i2cdevices.org zu finden. Hier einfach nach HW-061 suchen und im Sketch einfügen.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // initialize the lcd
lcd.init();
lcd.backlight();
lcd.setCursor(2,0); //Erste Zeile und 2 Zeichen freilassen
lcd.print("Gesehen auf");
lcd.setCursor(2,1); //Zweite Zeile und 2 Zeichen freilassen
lcd.print("Prilchen.de");
}
void loop()
{
}
Ausgabe des Text auf dem Display
Der Arduino kann aber auch alternativ nach der I2C Adresse scannen.
Kleines Sketch um die I2C Adresse zu finden:
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
void loop()
{
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0;
for(address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");
nDevices++;
}
else if (error==4)
{
Serial.print("Unknown error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000); // wait 5 seconds for next scan
}
Scanner gibt im Seriellen Monitor dann Auskunft: