LiquidCrystal
Diese Bibliothek ist recht interessant. Mit ihrer Hilfe kann man einfache LC-Displays mit mehreren Zeilen und Spalten ansteuern. Allerdings geht es hier um reine Textdisplays. GRafikdisplays funktionieren etwas anders. Man muss auch etwas aufpassen. Nicht jedes auf dem marktbefindliche LCD-Shield funktioniert mit dieser Bibliothek. Eigentlich funktionieren nur die wenigsten damit. Nämlcih diejenigen, die auf den Hitachi HD44780 oder kompatiblen Chips beruhen. Aber diese Bibliothek dient für fast alle LCD Hersteller als Vorlage. D.h. hat man einmal verstanden, wie das hier mit dem LCD funktioniert, kann man das auf sein eigenes LC-Display anwenden. Die Treiber heissen dann meistens anders, bieten aber die gleichen Funktionen. Manche sogar ein paar mehr. Lange Rede kurzer Sinn, hier die Funktionen:
LiquidCrystal lcd(rs, enable, d4, d5, d6, d7) LiquidCrystal lcd(rs, rw, enable, d4, d5, d6, d7) LiquidCrystal lcd(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7) LiquidCrystal lcd(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)
WIe man hier wieder schön sieht, LiquidCrystal ist ein Objekt. Ich hab es mal lcd genannt. Beim Erzeugen des Objektes muss man diesen ein paar Parameter mitgeben. Dieses sind alle Pins, mit denen der Arduino mit dem LCD komunizieren soll.
lcd.begin(Spalten, Zeilen)
Jetzt beginnt die Kommunikation. Hier muss dem treiber noch gesagt werden, wieviel Zeilen und Spalten das Display hat. Und zwar in Zeichen.
lcd.clear()
Löscht das Display und positioniert den Cursor nach links oben.
lcd.home()
Positioniert den Cursor nach links oben. Dabei wird aber nix gelöscht.
lcd.setCursor(Spalten, Zeilen)
Setzt den Cursor auf die angegebene Zeile und Spalte.
lcd.write(Zeichen)
Schreibt ein Zeichen (angegeben als Byte) an die Stelle wo der Cursor steht, der Cursor wird automatisch weitergeschoben.
lcd.print(Daten) lcd.print(Daten, Basis)
Schreibt die angegeben Daten auf das Display. Die Daten können von den Typen char, byte, int, long, oder string sein. Basis dient der Formatierung von numerischen Daten. BIN für die binäre Darstellung, DEC für Dezimal, OCT für Oktal, HEX für Hexadezimal.
lcd.cursor() lcd.noCursor()
Zeigt den Cursor an oder auch nicht. Dieser wird normalerweise als kleiner Unterstrich dargestellt.
lcd.blink() lcd.noBlink()
Der Cursor blinkt. Oder auch nicht.
lcd.display() lcd.noDisplay()
Display ist an oder aus.
lcd.scrollDisplayLeft() lcd.scrollDisplayRight()
Verschiebt den Text und den Cursor um ein Zeichen nach Links oder Rechts.
lcd.autoscroll() lcd.noAutoscroll()
Schaltet das automatische SCrollen des Displays ein bzw. aus. Das heißt die Zeichen werden automatisch weitergeschoben
lcd.leftToRight() lcd.rightToLeft()
Die Standardrichtung in der Zeichen geschrieben werden. Wir hier machen Links nach rechts. Aber wir sind ja nicht alleine auf der Welt.
lcd.createChar(Nummer, Daten)
Definiert ein eigenes Zeichen. Dieses wird unter der Nummer abgelegt. Daten ist ein Datenblock mit 8 Bytes. Beispiel:
byte smiley[8] = { B00000, B10001, B00000, B00000, B10001, B01110, B00000, }; void setup() { lcd.createChar(0, smiley); lcd.begin(16, 2); lcd.write((byte)0); }
Da wird dann an der Stelle 0 ein Smiley angezeigt. In einigen Beispielen ist bei der write() Methode ein kleiner Fehler, den der Compiler mit einer Fehlermeldung quittiert.
error: call of overloaded 'write(int)' is ambiguous
Das liegt daran, daß der Compiler meint, bei der Zahl handelt es sich um einen Datentyp int. Deswegen muss man expliziet den Typ angeben. Also:
lcd.write((byte)0);