In dem Versuch wird ein LCD-Display 20x4 vom Arduino angesteuert. Die Teilnehmer sind:
- LCD-Display mit 4 Zeilen a 20 Zeichen
- Arduino als Steuergerät
- ein Potenziometer (10k) zur Einstellung des Kontrastes (Helligkeit) der Anzeige.
LCD Display 20x4
Die Schaltung ist relativ unkompliziert. Das Display wird mit sechs Leitungen mit Arduino verbunden. Neben weiteren
zwei Leitungen, die der Spannungsversorgung des Displays dienen, kommt noch eine dritte, die mit dem Schleifer des Potenziometers
verbunden ist. Der Schaltplan sieht dann wie folgt aus:
Schaltplan (Arduino ohne USB-Anschluss oder Netzteil: Vin > 6 V)
Die zugehörige Testschaltung ist dementsprechend schnell aufgebaut:
Testschaltung auf einem Steckbrett
In dem Programm kommt die Bibliothek <LiquidCrystal.h> zum Einsatz. Mit der Bibliothek kann ein auf
dem HD44780-Chip von Hitachi basierendes Display entweder im 4- oder 8-Bit-Modus angesteuert werden (hier 4-Bit-Modus).
Mit dem Programm bringen wir einen Satz zum Scrollen (Laufschrift). Die Schrift wird mit kleinen zeitlichen Verzögerungen von
rechts nach links verschoben. Der zu ausgebende Text ist in der Variable "Satz" untergebracht. Die Variable "Reihe" besteht aus 20 Zeichen,
die aktuell auf dem Display angezeigt werden. In einer Schleife werden hier die Zeichen fortlaufend um eine Stelle nach links
verschoben. Der letzte Platz in "Reihe", der frei geworden ist, wird anschließend mit einem Zeichen aus dem "Satz" gefüllt.
// *************************************************************
// Kurt - Der Unerschütterliche
// Laufschrift mit
// LCD-Display 4 Zeilen a 20 Zeichen
// Arduino Mega 2560 R3
// *************************************************************
#include<LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
String Satz = "Kurt, bist du aberglaeubisch? - Nein, warum? - Du bist mein 13 Verlobter!";
String Reihe = " ";
int Satz_Laenge;
char Zeichen;
void setup() {
lcd.begin(20,4);
lcd.setCursor(0, 3);
lcd.print ("xxxxxxxxxxxxxxxxxxxx");
}
void loop() {
for (int i = 0; i < Satz.length() + 20; i++) {
for (int j = 0; j < 19; j++) {
Zeichen = Reihe.charAt (j+1);
Reihe.setCharAt(j, Zeichen); }
Zeichen = ' ';
if (i < Satz.length()) {
Zeichen = Satz.charAt (i); }
Reihe.setCharAt(19, Zeichen);
lcd.setCursor(0, 1);
lcd.print (Reihe);
delay(500);
}
}
// *************************************************************