Neopixel Bitmap Lightpainter

Zum Abschluss der kleinen Serie ‚Advent für Fotonerds‘ kommt hier der 4. Teil: ein Neopixel Bitmap Lightpainter. Eigentlich war ein anderes Projekt vorgesehen. Das hat leider nicht so geklappt wie gewünscht.

Deshalb eine Fortsetzung des vorherigen Artikels. Diesmal geht es um die Darstellung von Bitmap Grafiken mit dem Neopixel POV.

Bitmap Format

Das Bitmap Grafik Format ist das einfachste Grafik Format das es gibt. Bei der unkomprimierten Version liegen neben dem Bitmap Header alle Pixel einfach hintereinander weg in der Dtei. Je nach Auflösung werden 8-32 Bit je Pixel benötigt. Der Einfachheit halber wird das 8-8-8 Bit Format gewählt, mit je 8 Bit für die Grundfarben rot, grün und blau. Je Pixel werden 32 Bit verwendet, obwohl hier 24 Bit ausreichen würden.

Zunächst wird das vorhanden Bild vom JPG Format in ein Bitmap konvertiert. Die Bitmap Größe muss dabei der Display Größe angepasst werden, d.h. 16 Pixel Höhe. Die Konvertierung klappt mit dem Tool IrfanView ganz gut. Damit lässt sich die Größe und das Ausgangsformat leicht ändern. Um die Bitmap Datei möglichst klein zu halten, reicht natürlich eine Kerze aus. Die 3 Kerzen dienen hier nur der Veranschaulichung.

Im Bitmap Format werden die Pixel zeilenweise von links nach rechts gespeichert. Das Neopixel POV dagegen gibt die Pixel spaltenweise von unten nach oben aus. Um unnötige Rechenoperationen zu vermeiden, ist es einfacher das Bitmap um 90° im Uhrzeigersinn zu drehen. Das geht ebenfalls recht einfach mit IrfanView.

3-kerzen28x16.jpg

Hardware

Für die Hardware greifen wir auf dieselbe Schaltung zurück wie für das Neopixel POV Display. Auf die Taster kann verzichtet werden.

Bitmap Konverter

Um die Bitmap Files in ein Arduino Programm einbinden zu können wird der Bitmap-to-C Konverter Utilty lpcbmp2c von lpcware verwendet.

Das Programm lpcbmp2c ist ein Kommandozeilentool. Für die Konvertierung der Bitmap Datei in ein C-Array wird der Befehl in einer Kommando Shell eingegeben:

lpcbmp2c -888

Als Ausgangsdatei wird eine C-Datei angelegt, die direkt in ein Arduino Sketch eingefügt werden kann.

Software

Für das Arduino Programm wird wieder die Adafruit Neopixel Library benötigt. Des weiteren wird die Gamma Werte Tabelle benötigt zur Korrektur der LED Helligkeit. Sonst sieht das erzeugte Bitmap etwas flau in den Farben aus. Die Tabelle findet sich in der Header-Datei „gamma.h“ aus dem Neopixel_Painter Beispiel der Neopixel Bibliothek. Die kopiert man einfach in den Ordner mit dem Arduino Sketch. Ebenfalls in den Arduino Sketch Ordner gehört die Bitmap Datei aus dem Bitmap to C Converter Tool „image888.c“

Titelbild

Das Titelbild sieht deutlich besser aus, als die selbstgemalte Grafik aus dem letzten Beitrag.

IMG_4627.JPG

Der verwendete Programmcode ist hier zu finden:
https://github.com/robotfreak/dfhacks/tree/master/Arduino/Neopixel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

12 + fünf =