|
Eigene Symbole auf LCD
Ziel:
Eigene Symbole erschaffen und im LCD ausgeben.
Für dieses Problem benutzt man die Methode lcd.createChar().
In unserem Fall soll es das Symbol einer leeren Batterie sein:
Genauso gut könnten es auch Umlaute oder was auch immer sein
(siehe Seitenende).
Programmquellcode:
#include
<LiquidCrystal.h>
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
//das Byte-Array mit dem Symbol:
byte battery[8] = { 0b01110,
0b11011,
0b10001,
0b10001,
0b10001,
0b10001,
0b10001,
0b11111
};
void setup(){
lcd.clear();
lcd.begin(16, 2);
lcd.createChar(0,
battery); //das Byte-Array in den LCD-Speicher 0
schreiben
lcd.setCursor(0, 0);
lcd.write( (uint8_t) 0 ); //
Byte-Array von LCD-Speicherplatz 0 ausgeben
}
void loop(){
// hier steht jetzt mal nix
}
Erklärung der Vorgehensweise
Ein einzelnes Zeichen auf dem LCD besteht aus 5x8 Pixeln, z. B.
eine Batterie:
|
01110
11011
10001
10001
10001
10001
10001
11111
|
1. Schritt:
Ein Byte-Array mit dem gewünschten Symbol erstellen.
Ein Symbol unseres LCD besitzt 5 Spalten und 8 Zeilen.
Eine Zeile wird somit durch eine 5-stellige Binärzahl
repräsentiert z. B.: 0b01110
(das "0b" meint: "Binärzahl")
Du kannst auch diesen komfortablen Symboleditor nehmen:
Hier kannst Du ihn herunterladen.
Er ist in Java geschrieben und Du kannst ihn einfach starten,
wenn Du auf Deinem Computer .jar-Dateien starten kannst (also
wenn Du eine Java-Laufzeitumgebung besitzt).
Du musst nur die gewünschten Checkboxen anhaken und kannst dann
aus dem rechten Fenster den fertigen Quelltext in Deinen Sketch
kopieren.
2. Schritt:
Dieses Byte-Array in einem der 8 dafür vorgesehenen
Speicherplätze im LCD ablegen.
3. Schritt:
Ausgeben des Speicherbereiches auf dem Display.
Dafür muss die Speicheradresse in das Zahlenformat bzw. den
Datentyp uint8_t gecastet (meint: "umgewandelt) werden.
uint8_t meint:
u unsigned (kein Vorzeichen: also nur positive Zahlen) uint unsigned int (nur positive ganze Zahlen)
uint8 mit 8 Bit (0 bis 255)
uint8_t das _t steht für: "das ist ein Datentyp" (damit sollen Verwechslungen mit Variablennamen ausgeschlossen werden)
Die großbuchstabigen Umlaute Ä, Ö und Ü bekommt man mit folgenden Byte-Arrays:
byte AE[8] = {
0b10001,
0b01110,
0b10001,
0b10001,
0b11111,
0b10001,
0b10001,
0b00000 };
byte OE[8] = {
0b10001,
0b01110,
0b10001,
0b10001,
0b10001,
0b10001,
0b01110,
0b00000 };
byte UE[8] = {
0b10001,
0b0000,
0b10001,
0b10001,
0b10001,
0b10001,
0b01110,
0b00000 };
|