PIXELZAUBER
Ich habe mir dieses Jahr zu Weihnachten einen RGB-Panel von ADAFRUIT mit 64 * 32 Pixel gekauft. Dazu habe ich das Device Matrix Portal S3 gekauft. Um ihn wirklich mit dem HUB75-Kabel zum Laufen zu bringen, ist es nötig die beiden Kabel des Panels mit Schraubverschlüssen des S3 zu verbinden. Rot an Plus, schwarz an MINUS. Da ich die ARDUINO-IDE bevorzuge, habe ich nach Anleitung alles dafür heruntergeladen und die Beispiele laufen lassen. Gerne wollte ich Fotos, etc auf das Panel bringen - natürlich entsprechend den Fähigkeiten des Controllers. Um jetzt mehrere Bilder und Schriften in Folge ablaufen zu lassen, waren mehrere Schritte notwendig:
- Reduzierung der Bilder auf max. 64 * 32 Pixel. Dazu habe ich GIMP benutzt, Im Menuepunkt Bild muss man dazu skalieren anwählen und auf max. 64 und max. 32 Pixel runterskalieren.
- Mit einem kleinen Pythonprogramm wird das Image dann in C-Code umgewandelt-weitestgehend, da ich mir noch nicht die Mühe gemacht habe, tiefer in Python einzutauchen.
from PIL import Image import sys import numpy as np print(sys.argv[1]) img = Image.open(sys.argv[1])
img_as_array = np.array(img) print(img_as_array.shape); print('{') for x in img_as_array: print('{',end=""); for y in x: print("{" , end='') for z in y: print(str(z),end=',') print('}',end=',') print('},') print('}')
Der Imagename wird über die Commandline übergeben, die Ausgabe leite ich in eine Datei um, die ich mit emacs nachbereite. Einmal alle Vorkommen von ,} duch } ersetzen (Replace String) . Dann das letzte Komma im Array ersetzen und das Array mit den shape Angaben in das folgende Arduinoprogramm kopieren:
Das Programm
#include <stdio.h> #include <stdlib.h> #include <Adafruit_Protomatter.h> #define BLACK 0x0000 #define BLUE 0x001F #define RED 0xF800 #define GREEN 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF