HD44780-Displays und Arduino: Individuelle Zeichen erzeugen

20161003_220723.jpg

Ach ja, es war einer der ersten Beiträge auf wiefreak.de: Jener Beitrag, in dem ich beschrieb, wie man ein HD44780-Display an einen Raspberry anschließt. Was ist seitdem passiert? Naja, mit dem Design des Blogs nicht viel, die Qualität ist… äh…. gleichbleibend mittelmäßig geblieben. Es kommen nach wie vor nur sehr selten Beiträge, und die meisten Beiträge sind nur sehr kurz und haben nur wenig von der sogenannten persönlichen Tiefe, die ich immer wieder vergeblich versuche in die Artikel einzubringen. (Sagte nicht mal jemand als Student hat man haufenweise Zeit?)
Egal, genug des Selbstmitleids. Heute geht es darum, wie man sich eigene Symbole und Zeichen auf einem solchen Display erzeugen und anzeigen lassen kann.
Und, wie so oft bei den Arduino-kompatiblen Bauteilen ist dies deutlich einfacher als erwartet.
Das Ganze unterteilt sich in 3 Teile: Die eigenen Zeichen definieren, sie in den Speicher des Displays laden, die Zeichen anzeigen.
Dabei ist der erste Schritt zugleich der komplizierteste. Wir definieren einen Array aus 8 5-Bittrigen Bytes (ich hab keine Ahnung ob man das wirklich so schreibt…), in den wir dann die 8 Zeilen des Displays laden.

byte lol[8] = {
0b11000,
0b10001,
0b00001,
0b00100,
0b00010,
0b00000,
0b00000,
0b10001}

Wichtig hierbei ist, dass jedes „1“-Bit später „hervorgehoben“ wird. So Zeichnet man sich Stück für Stück seine Form.
Da das sehr umständlich und schlecht vorzustellen ist, habe ich schnell mit C++ ein Progrämmchen zusammengehämmert, mit dem sich diese Formen viel schneller und besser erstellen lassen.

costum_char_ad
Am Ende lässt man sich den Code generieren und fügt ihn über der setup()-Schleife ein.

Das kleine Progrämmchen kann man sich hier runterladen.

So! Jetzt aber genug werbefinanzierter Clickbait. Zurück zum Display.

In der Setup()-Schleife fügt man dannn für jeden Char die Zeile

lcd.createChar(1, besterName);

ein. Natürlich jeweils mit der Bezeichnung, die ihr oben vergeben habt. Die Zahl steht für den jeweiligen Byte. Also bei mir ist es der erste.

Wichtig beim Aufrufen ist, dass ihr nicht print() verwenden dürft, es muss write() sein. Wenn es dann immer noch nicht geht, setzt die Zahl in ein byte(Zahl). das muss bei manchen gemacht werden.

Komplett-Tutorial: HD44780-Display mit Raspberry Pi benutzen


(Hinweis: Alle benötigten Bauteile und Komponenten findet ihr auch im Wiefreak.de Shop oder durch klicken auf einen der Links)

Nach vielen mühsamen Internetrecherchen habe ich jetzt sowohl die Hardware als auch die Software-Komponenten für meine Technikfedermappe- vorallem aber für die Displaykomponente im Sack. Ich möchte kurz zusammenfassen, was man tun muss, um auf dem Display „Hello World“ lesen zu können.

1. Das passende Display

Ein HD44780 Display für den Rasperry.

Ein HD44780 Display für den Rasperry.

Hier muss man sich entscheiden, wie groß das Display sein soll. Die gängigen Formate sind 16×2 und 4×20 Zeichen. Für meine Technikfedermappe benutze ich ein vierzeiliges. Das tolle an der HD44780 Codierung ist: Egal von welchem Hersteller das Display ist, es funktioniert immer gleich. Ein zweizeiliges Display gibt es auf Amazon für rund 3 €.Von No-Name firmen gibt es auch gute für 2 €
. Für ein vierzeiliges muss man schon mal 7 € hinlegen.


Ein Vierzeiliges Display in der 3D-Ansicht.

Ein Zweizeiliges Display in der 3D-Ansicht.
Jetzt kommt das schwierige : Das verkabeln! Am besten eignen sich hierfür Jumperkabel wie diese.

Jumperkabel

10 Jumperkabel , wie ich sie auch benutze.

.

Wie das funktioniert, seht ihr in dieser Tabelle:

LCD Kontakt – an GPIO-Pin
1     –  6
2     – 2
3     – 6
4     – 26
5     – 6
6     – 24
11   – 22
12   – 18
13   – 16
14   – 12
15   –   2
16   –   6

Die Zahlen am LCD-Display stehen dran, für das GPIO Mapping kann man sich auf eine Zeichnung wie diese hier berufen.

GPIO – Map (Standardbelegung)

Tipp: Das Display leuchtet sehr hell und verbraucht viel Strom! Wer es dunkler möchte, sollte zwischen LCD Kontakt 16 und GPIO-Pin 6 einen Widerstand schalten.

Ob der Raspberry richtig verkabelt ist seht ihr daran, das beim einschalten jede zweite Zeile weiß aufleuchtet.

Wenn der Raspberry erfolgreich verkabelt ist, machen wir uns an die Software:
Im Internet habe ich auf diesem Blog einen Code gefunden, den ich etwas umgeschrieben habe, damit man ihn unkompliziert benutzen kann:

http://pastebin.com/95ZX5yiW

Kopiert euch das (es ist ganz schön viel, sonst hätte ich es hier gepostet) und speichert es als lcd.py
Jetzt habt ihr eine Universal-Klasse, die ihr bei jedem Projekt einfach mit
import lcd
importieren und benutzen könnt.
Eine Ausgabe erzeugt ihr dann mit:
lcd.show(a,b,c,d) (a ist die erste Zeile, b die zweite u.s.w.)
So wird beispielsweise in Zeile 1 eures Displays die variable Text angezeigt.

Um Hello World lesen zu können geben wir also ein: lcd.show("Hello world","","","")