Making Of

Im Sommer 2014 erhielt ich einen Anruf von Franzis. Der Verlag plane ein Lernpaket im Bereich "LCD" und sie seien auf der Suche nach einem geeigneten Autor. Damit hätte ich nie gerechnet. Ich war sofort begeistert von der Idee und natürlich sehr gespannt auf das Projekt. Noch am selben Tag ging die Planung los. Schnell war klar, dass solch ein Lernpaket einiges an Zeit für die Entwicklung in Anspruch nehmen würde. Zu diesem Zeitpunkt war mein Auftragsbuch für den Rest des Jahres bereit fast voll und kaum noch Zeit für ein so großes Vorhaben. Dennoch wollte ich unbedingt dabei sein und an der Entwicklung mitwirken. Ein paar Tage später war mit Fabian Kainka der perfekte Partner für das Projekt gefunden. Kick Off für ein sehr spannendes Projekt.
Wer die Wahl hat ...
Im ersten Schritt ging es um die Auswahl verfügbarere Displays am Markt. Dazu sollten wir von der Produktion mit Mustern versorgt werden. Bald darauf gab es dann auch Post aus China. Kinder es ist Weihnachten das Spielzeug ist da!
Display Muster für den Hardwareentwurf
Eines war direkt klar. Es muss ein grafisches Display sein. Damit war die Auswahl jedoch nicht viel kleiner geworden. Auch musste grundsätzlich entschieden werden ob monochrom oder farbig und welcher Displaycontroller zum Einsatz kommt.
Schaltungsentwurf
Für die Testphase sollte ein ATtiny2313a reichen. Viele der Musterdisplays waren per SPI-Schnittstelle ansteuerbar. Nur wenige verfügten über eine parallele Schnittstelle. Alle bisherigen Projekte mit dieser Art von Displays hatten auch immer einen fetten Controller mit dabei. Und das hatte auch seinen Grund. Möchte man den Bildinhalt eines 128*64 Pixel großen monochromen LCD füllen sind bereits 1024 Bytes nötig (1024 * 8 == 128 * 64). Kommt dann noch Farbe ins Spiel multipliziert sich der Speicherplatz durch die Farbtiefe. Mit einer 8Bit Farbtiefe sind das bei gleicher Auflösung bereits 8kB Bilddaten.
Nach Abwägen aller Vor- und Nachteile sollte es dann ein monochromes 12864 mit einem internen ST7565r Displaycontroller sein. In Kombination mit einem Arduino könnte man damit viel machen. Damit stand dann auch das Zielsystem fest. Es sollte ein Lernpaket für Arduino werden. Für den Schaltungsentwurf ergab sich dabei eine besondere Anforderung. Der Arduino läuft mit 5V. Alle verfügbaren Displays vertragen jedoch maximal 3,6 V. Ein Pegelwandler musste her.
Schaltungsentwurf für das LCD Shield
Beim Entwurf wurde darauf geachtet, dass nur der obere Teil der Anschlüsse des Arduinos Verwendung finden. Es sollten noch genug IO-Ports für eigene Zwecke übrig bleiben. Diese Anforderung konnte gut umgestetzt werden. Es waren sogar noch 2 Ports für zusätzliche Taster frei.
Prototyp
Nachdem wir von der Produktion alle verwendeten Teile als Muster vorliegen hatten ging es an den Bau eines Prototypen. Grundlage für den Aufbau war eine Arduino Lochrasterplatine. Leider waren bei den Exemplaren die ich bestellt hatte die Bohrungen viel zu klein. Alles einmal nachbohren und den unteren Teil der Platine absägen.
Frontansicht des Prototyps
Die Anordnung der Taster ist von der Menüführung alter Handys abgeschaut (Tastenfunktion als Label auf dem Display). Noch ein Schiebeschalter für die Funktionsart der Hintergrundbeleuchtung (schaltbar/Dauerbetrieb) und fertig war die erste Platine.
Rückansicht des Prototyps
Nicht schön aber doch hoffentlich funktionstüchtig. Zeit für einen ersten Test.
Definition der Inhalte
Mit den ersten Tests entstanden schnell ein paar brauchbare Testprogramme für das Display. Zu diesem Zeitpunkt gab es noch keinerlei Konzept für die Didaktik des Lernpakets. Wichtig war vorerst was der Anwender generell mit einem 12864er LCD alles anstellen kann und welche Anwendungsfälle wir zeigen wollten. 20 praxisnahe Anwendungen sollten es schon sein. Und das war ist Ergebnis (unterteilt in verschiedenen Anwendungstechniken):
Hardwarenahe Kommunikation und Verwendung
• Starter - Das erste Beispiel (Kontrasteinstellung)
• HelloWorld - Das erste eigene Programm (Daten zum Display übertragen)
• AnalogInput - Messergebnisse am Display anzeigen (Messdaten als Balkenanzeige)
Verwendung als Textdisplay
• CharSet - Der erste Schritt zum Textdisplay (Eigenen Zeichensatze entwickeln)
• ASCII - Der komplette Zeichensatz (Textausgabe und Formatierung)
• SerialTextDisplay - Textausgabe und PuTTY (Ein serielles Display)
• Metering- Messdaten ausgeben (Datenaufbereitung auf einem Textdisplay)
Verwendung als Grafikdisplay
• Constellation - Wie Sterne am Himmel (Einführung Videoram und einzelnde Pixel setzen)
• Scope - Ein einfaches Oszilloskop (Messdatennormierung und Darstellung)
• Nikolaus - Das Haus vom Nikolaus (Linienalgorithmus)
• Analysis - Matheunterricht mit Arduino (Funktionen zeichnen)
• SmartHome - Hausautomatisierung auf dem Display (Grafiken und Animationen)
• AnalogWatch - Digitaluhr mit Ziffernblatt (Displaykoordinaten und die Mathematik)
• Geometrie - Auf zu neuen Formen (Kreise und andere geometrische Figuren)
• VUMeter - Der klassische Aussteuerungsmesser (Messdaten und grafische Aufbereitung)
• Calendar - Analoge Uhr mit erweiterten Funktionen (Externe Programmbibliotheken)
• HardwarePlayground - Die Hardware voll im Griff (Was kann der Displaycontroller)
• Navigation - Ein Menü mit reichlich Auswahl (einfaches UserInterface)
• TurtleGraphics - Der kleine Zeichenroboter (Displayprogrammierung mal anders)
• Flappy Bird - Spielspaß zum Abschluss (LCD-Spieleprogrammierung)
Damit waren die wichtigesten Anwendungsfälle für ein monochromes grafisches Display abgedeckt.
Fortsetzung folgt...
Links und Referenzen: