LED Matrix: Bilder nicht horizontal, sondern vertikal scrollen (neopixel)

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
sebar
User
Beiträge: 6
Registriert: Samstag 16. November 2019, 19:36

Liebes Forum,

meine Python-Kenntnisse befinden sich noch im Prenatal-Stadium, meine Bash-Kenntnisse immerhin im Kleinkindalter. Meine DIY-Matrix hat mir schon viel Freude bereitet und ich bin echt stolz darauf, schon die zweite gelötet und mit allerlei Pixel-Art gefüttert zu haben :). Sie besteht aus 24x12 WS2812 (oder WS2811?) LEDs und wird schon eine ganze Zeit lang von diesem Python-Skript angesteuert:
http://www.aoakley.com/articles/ledmatrix.py.php

Aufgrund meiner bescheidenen Programmierkenntnisse fällt es mir aber echt schwer, dieses Skript für verschiedene Usecases umzuschreiben. Immerhin gelang es mir, Argumente einzubauen, die es dem User ermöglichen, das Skript mit beliebigen Bildnamen, Helligkeiten und Schnelligkeiten auzuführen. Dann hört es aber auf... Was ich mir wünsche, ist die Scrollrichtung per Argument zu bestimmen - z.B. horizontal, vertikal, vorwärts, rückwärts.

Hintergrund ist die Tatsache, dass manche Bilder (bzw. Animationen) einfach horizontal keinen Sinn ergeben: Beispielsweise ein Bild, dessen Höhe viel größer als die Breite ist (Tapeten-Ratio oder Papyrus-Ratio). Konkret habe ich die Wettervorhersage der kommenden Stunden/ Tage, die in meiner Auflösung (24x12) nur in "Papyrus-Ratio" Sinn ergibt: untereinander (z.B. 24x60 Pixel). Ein solches Bild lässt sich mit dem verlinkten Skript aber nicht sinnvoll scrollen (von oben nach unten).

Konnte ich mich verständlich machen...?
sebar
User
Beiträge: 6
Registriert: Samstag 16. November 2019, 19:36

Die Anfrage bezieht sich auf die Verwendung von Raspberry Pi Geräten...
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dreh das Bild doch einfach um 90 grad, und stell die Pixel Matrix entsprechend um. Dann passt das doch.
sebar
User
Beiträge: 6
Registriert: Samstag 16. November 2019, 19:36

Danke für deinen Vorschlag!
Leider kann ich dir aber nicht ganz folgen.
Angenommen, ich habe ein Bild einer nach oben fliegenden Rakete - Spitze zeigt nach oben.
Wenn ich das Bild um 90° drehe, fliegt sie zur Seite.
Wie genau kann ich denn die Matrix umschreiben, um dies zu verhindern?

Falls du aber meinst, ich soll das Gerät physisch drehen, dann ist das keine Option.
Dafür habe ich zu viele andere Bilder und Animationen, die auf das Wide-Format ausgerichtet sind.
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Noe, du sollst das nicht physisch drehen. Sondern die Zuordnung der LEDs in der Tabelle am Anfange so aendern, das aus Zeilen Spalten werden. Der Code denkt dann er scrollt von links nach rechts, aber im Ergebnis ist es von oben nach unten. Stell dir einfach vor wie das ganze aussieht wenn du den Kopf um 90 Grad nach rechts kippst. Dann ist die Spalte ganz rechts die oberste Zeile. Die darunter dann die Zeile zwei. Etc.
sebar
User
Beiträge: 6
Registriert: Samstag 16. November 2019, 19:36

...aber hieße das nicht, dass die Rakete seitwärts fliegt?
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nein. Glaub mir.
sebar
User
Beiträge: 6
Registriert: Samstag 16. November 2019, 19:36

Jetzt hast mir große Hoffnung gemacht :). Sobald die Kids im Bett sind, probiere ich es aus!
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Es klappt bestimmt. Wie gesagt, wenn es der eigenen Vorstellung hilft, tu so als ob das Display eben um 90 Grad nach links gedreht vor dir liegt, und dann ein 12x24er ist. Ordne die Nummern entsprechend zu, und bastel dir ein Bild das eben 24 Pixel hoch und 60 breit ist. Und lass das scrollen.
sebar
User
Beiträge: 6
Registriert: Samstag 16. November 2019, 19:36

Geil, läuft!!
Ich muss nur noch einige Fehler beim Umrechnen der Matrix beheben...
Es haben sich fehlerhafte Pixel eingeschlichen ;).
Tausend Dank! :)
Antworten