Ein PixelStick ist ein Werkzeug fürs Light Painting
Das Ganze existiert auch als fertiges Produkt. Falls es wen interessiert, geht's hier entlang: Link

Da die Idee, so was zu machen, allerdings zwischen Weihnachten und Neujahr 2017 entstanden ist und die Lieferzeiten von den üblichen Paketdiensten in dieser Zeit eher eine Katastrophe sind, hieß es selber machen. Nur wie?

Der Plan war simpel, ein Bild in Spalten zerlegen und diese auf einem adressierbarem LED Strip anzeigen. 
Also ein bisschen Intelligenz, LEDs und ein Akku sollten genügen.

Die erste Version bestand aus einem Arduino Mega und den LEDs. Diesem konnte man dann eine vorgekaute Datei auf einer SD Karte vorwerfen und der hat die Spalten dann auf dem LED Strip angezeigt. Soweit so gut. Das ganze mit ein paar Kabelbindern an einen Besenstiel getüddelt und auf zum ersten Test.

Um's mal vorsichtig auszudrücken: die Ergebnisse waren bescheiden. Die Farben waren verkehrt und matschig und ich konnte mich kaum so langsam bewegen, dass das Bild nicht fürchterlich gestreckt aussah. Und die Auflösung war auch nicht der Brüller. 

Also nochmal auf Anfang. 
Nach einigen erfolglosen Versuchen den Arduino zu schnellem Arbeiten zu bewegen, flog dieser raus und wurde durch ein Himbeer Gerät ersetzt. 
Also alles nochmal von vorne. Den Code in Python3 nochmal geschrieben und die LEDs drangefummelt. Die Bilder konnten nun direkt auf die SD Karte vom Raspi kopiert werden und dieser hat dann auch direkt noch das Programm zur Konvertierung spendiert bekommen.

Zum Ansteuern der LEDs war die rpi-ws281x-python library eine große Hilfe. Warum das Rad neu erfinden, es wird eh wieder rund. 

Nach einem kleinen Kabelbinder-Intermezzo ging es zum nächsten Test. 

Nun ja. Die Geschwindigkeit war um einiges besser und die Farben sahen nun auch besser aus. Aber immer noch matschig. Also das Bild vorher so bearbeitet, dass die Farben leicht übersteuert waren und nochmal testen. 

Besser.

Die Bilder jedoch jedes Mal vorher zu bearbeiten nervt doch ziemlich. Also, wie macht man eine gamma Korrektur in Python? 
Viel Kaffee und eine lange Nacht später scheint das ganze dann doch zu funktionieren. War gar nicht so schwer im Nachhinein. 
Wer möchte, kann sich hier den Wiki Artikel mal zu Gemüte führen. 

Nun zur Auflösung:
116 Pixel ist nicht wirklich viel. Also musste mehr her. Kurz mal im Neuland umgeschaut und LED Strips mit einer höheren Packungsdichte gefunden und bestellt.

Ein Besenstiel ist auch nicht die optimale Lösung. Also ab in den Keller und mal gucken, was da noch so rumliegt. Und siehe da: 1,5m Alu Profil 30x30mm.
Ein bisschen überdimensioniert, aber was soll’s. 
Die LEDs kamen dann auch kurze Zeit später per Post. 
Aus den 4x 50cm wurde dann ein 1,5m langes Stück zusammengelötet. Dabei bestand die Schwierigkeit darin, an den Lötstellen den passenden Abstand einzuhalten, damit das ganze später auch gleichmäßig aussieht. 

Die LED wurden nun in das Alu Profil reingefummelt und fixiert. 216 Stück an der Zahl.
Die Stromversorgung wurde nochmals überarbeitet. Die Kerlchen brauchen doch eine Menge Strom. Also wurde die Stromversorgung von Raspi und den LEDs getrennt. Ich hatte zur Zeit nur einen 5V 5A DCDC Wandler da. Ist nicht optimal, wird aber gehen. 

Alle für die Montage benötigten Teile wurden kurzerhand 3D-gedruckt und montiert.

Die Software war immer noch etwas hakelig. Und die Bedienung im Terminal ohne Display ist auch eher suboptimal. 
Einer meiner 3D-Drucker musste kurzerhand sein Touch-Display spenden. 

Also die Software um ein grafisches Interface erweitert und das ganze in ein Gehäuse montiert. 
Nun ist der PixelStick weitestgehend fertig. Oder zumindest mäßig komfortabel benutzbar. 

In den Letzte  Jahren sind noch weitere Funktionen dazu gekommen. Einstellbare Geschwindigkeit, Helligkeit, Bildumkehr und eine Taschenlampen Funktion. 
Das vollständige Python Projekt gibt's auf GitHub PixelStick GitHub