|
Linux-Projekte
für den Raspberry Pi,
mit
Python realisiert
Ansteuerung
LCD-Display [EADOGXL240-7]
|
Alle
Komponenten wurden auf einem doppelten Experimentierboard ( 2x
A-J / 1-63) aufgebaut.
Bei
LED Panel und LCD-Display ist zu beachten, das die Pins des
Display zunächst durch die Löcher des LED-Panel gesteckt werden
müssen und diese Kombination erst dann auf das Bord gesteckt
werden sollte. Außerdem sollten die LED-Pins von Backlight und
Display (1-3 und 18-20) verlötet werden, da diese sonst keinen
Kontakt haben und die Beleuchtung entweder gar nicht funktioniert
oder flackert.
Von
einer PCM-Steuerung des Backlights zur Helligkeitseinstellung
wurde abgesehen, da es sich ich einem anderen Projekt gezeigt
hat, daß die PCM Modulation nicht konstant ist. D.H. je nachdem
welche Programmen laufen und je nach Prozessorlast flackert die
Beleuchtung dann zum Teil nervtötend.
Zu Testzwecken
hatte ich bei diesem Versuchsaufbau nur jeweils 2 LED-Pfade in
Betrieb, die zudem auch nur über Krokodilklemmen angeschlossen
waren. Hier ist auch nur EIN Vorwiderstand vorhanden (geht zur
Not auch). Im Praxisbetrieb sollte man sich aber an die Oben
erläuterte Vorgehensweise halten (und mit EINEM Vorwiderstand
für JEDEN LED-Zweig)!
Programmentwicklung
Zeichensätze
Da
das Display keine eigenen Zeichensätze besitzt (dafür aber sehr
preiswert ist), wurden zunächst mehrere Zeichensätze, in
verschiedenen Größen angelegt.
Es
handelt sich dabei um Vektor- und Raster-Fonts. Diese sind an den
Font-Namen (mit enthaltenem V = Vektor oder R = Raster) zu
erkennen.
Die
Vektor-Fonts wurden entwickelt, da diese ohne
Computer-Hilfsmittel leichter zu erstellen sind. Inzwischen wurde
ein Tabellenkalkulations-Formular
erstellt (Neeeiiiin, kein EXCEL), das die
Zahlencodes aus den gesetzten oder nicht gesetzten Zellen
(Raster) entsprechend ausgibt.
Folgende
Tabelle listet die momentan vorhandenen Zeichensätze auf:
|
Zeichensatz-Name
|
Zeichensatz-Art
|
Größe
(Pixel)
|
|
r10x14
|
Raster
|
10
x 14
|
|
r12x18
|
Raster
|
12
x 18
|
|
r5x8
|
Raster
|
5
x 8
|
|
v3x6
|
Vektor
|
3
x 6
|
|
v5x7
|
Vektor
|
5
x 7
|
|
vZ7x7
|
Vektor-Ikons
|
7
x 7
|
|
vZ9x11
|
Vektor-Ikons
|
9
x 11
|
|
Bei
den Zeichensätzen wurden aus Zeitgründen meist nicht alle
möglichen ASCII-Zeichen erzeugt. Daher ist es wahrscheinlich,
daß nicht alle eingegebenen Zeichen dargestellt werden. Um
möglichst viel Informationen auf dem LCD-Display anzeigen zu
können, wurden auch extrem KLEINE Zeichensätze verwendet.
Dabei ist die 'Schönheit', bzw. leichte Erkennbarkeit zum
Teil 'auf der Strecke geblieben'.
|
Bei
der Entwicklung der Zeichensätze wurde auch nicht allzu viel
Zeit auf die Optik verwendet. Dem Benutzer steht es aber frei,
vorhandene Zeichensätze zu ändern oder selbst neue zu
entwickeln.
Bei den „Z“-Fonts werden nur wenige
Grafikzeichen bereitgestellt, die von anderen Projekt
stammen.
Die Zeichensatzdatei selbst besteht aus einem
Python-File mit einem Dictionary für jeden Zeichensatz.
Es
wird jedes Zeichen als Key angelegt. Als Werte folgen eine Liste
mit den Raster- oder Vektorwerten.
Beispiel
1 (Vektorwerte):
|
|
Beispiel:
Vektor 3 x 5:
v3x6 = {"1":("I",
2,0, "H", -1,1, "I", 0,3, -1,-1),
…..
Hier bedeutet
„I“ = Stift
absenken, d.h. nachfolgend sichtbar schreiben
„H“ =
Stift anheben, d.h. nachfolgend positionieren.
Wertepaare
bedeuten relativ positionieren.
Z.B -1,1 heißt Position
X um -1 (nach links) und Y +1 (nach oben) verschieben.
Plus
bedeutet rechts oder rauf/ Minus heißt links oder runter.
|
Startpunkt
jedes neuen Zeichens ist per Definition immer die untere, linke
Raster-Koordinate.
Der
Stift ist zu Beginn immer implizit angehoben (unsichtbar)
Der
Stift wird am Ende immer implizit angehoben (unsichtbar)
Diese
Konventionen wurden in Anlehnung an einen 'echten' X-Y Plotter
entwickelt.
Beispiel
2 (Rasterwerte):
|
|
Beispiel:
Raster 10 x 15
r10x14 = {"A":
(0x3FF0, 0x3FF8, 0x31C, 0x30E, 0x307, 0x307, …..
Hier
werden nacheinander die Spalten mit den jeweils gesetzten Bits
der Zeilen eingegeben.
Bits können nur gesetzt oder
nicht gesetzt sein.
Eventuelle Grautöne werden
dann mit den Grafikbefehlen erzeugt
|
Alle
Zeichensätze dieser Datei mit dem festen Namen
„ZeichensaetzeLCD.py“ können, nach dem Import durch das
Hauptprogramm, verwendet werden.
Die Liste der Zeichensätze
kann mit dem Befehl 'FONT.get_List()' ausgegeben werden.
|
Index
|
Zeichensatz-Name
|
|
0
|
r10x14
|
|
1
|
r12x18
|
|
2
|
r5x8
|
|
3
|
v3x6
|
|
4
|
v5x7
|
|
5
|
vZ7x7
|
|
6
|
vZ9x11
|
|
FONT.get_List()
Die
Indexnummer des Zeichensatzes der Liste linkss entspricht der
Nummer, die im Befehl 'FONT.font(nummer)' eingegeben werden
muß.
|
Die
Liste der möglichen Font-Befehle folgt hier:
|
Befehl
|
Bedeutung
|
|
font(nummer)
|
Zeichensatz
mit der Indexnummer 'nummer' auswählen
|
|
get_Name()
|
Namen
des aktuellen Zeichensatzes anzeigen
|
|
get_List()
|
Liste
mit den Namen der geladenen/ verfügbaren Zeichensätzen
anzeigen
|
Der
Vollständigkeit halber sollte ich aber auch darauf hinweisen,
daß es unter anderem auch für dieses Modul vom Hersteller
erstellte Zeichensätze im Handel zu kaufen gibt. Diese sind
aber nicht ohne weiteres in dieses Projekt integrierbar.
Die
Datei mit meinen Zeichensätzen befindet sich
HIER