LEDsim - Simulator für SmartLED (WS281x) basierte Matrix-Anzeigen
Erst ab Firmware-Version 2.7.0/2.7.0.32
Der hier beschriebene LED-Simulator ist erst ab Firmware 2.7.0/2.7.0.32 (bzw. 1.7.0/1.7.0.32 bei P44-LC) und neuer enthalten.
Übersicht
Der LED-Simulator erleichtert die Arbeit mit dem p44lrgraphics-Subsystem, da er es ermöglicht, die gesamte Ansichtshierarchie eines LED-Setups zu überprüfen, sogar wenn noch gar keine LEDs angeschlossen sind, oder diese für den Entwickler nicht im Blickfeld sind (z.B. bei Fernwartung). Der Simulator kann über die entsprechende Schaltfläche "LED Sim..." auf der Registerkarte "System" oder über den farbigen Button unten rechts in der IDE aufgerufen werden. Beim Aufruf zeigt der Simulator das gleiche Bild wie die angeschlossenen/konfigurierten LEDs, der Auschnitt und der zu betrachtende View kann aber manuell eingestellt werden.
View-Hierarchie
Im Popup-Menu oben links ist die "View-Hierarchie" sichtbar, d.h. der Aufbau des Bildes, das auf den LEDs sichtbar wird. Der oberste Eintrag, der "rootview" entspricht dem, was auf den LED angezeigt wird. Dieses angezeigte Bild setzt sich aus übereinander oder nebeneinander gelegten "Sub-Views" zusammen, welche teilweise durchsichtig sein können, so dass sich die Farben aus mehreren Schichten überlagern. Es gibt verschiedene View-Typen, der jeweilige Typ steht in Klammern angezeigt.
Mit dem Popup-Menu kann ausgewählt werden, welcher "View" (mit seinen Subviews) angezeigt werden soll.
Wird ein neuer View ausgewählt, werden seine Eigenschaften im Inspektor als JSON-Objekt ausgegeben, und die Pixel des Views in der Pixelanzeige dargestellt.
Pixel-Anzeige
Die Pixelanzeige kann das gesamte LED-Arrangement (die gesamte mit LEDs bestückte Fläche = der rootview) anzeigen, oder nur Teile davon.
-
Beim Aufruf des LED-Simulators werden die Parameter (Grösse x,y und Position x,y) so gesetzt, dass der rootview ganz sichtbar ist.
-
Beim Umschalten auf subviews mit dem Popup ändern sich die Parameter nicht automatisch. Um sie an die Grösse des aktuell angezeigten (Sub)views anzupassen, kann der
Auto
-Button oben gedrückt werden. -
Die Parameter können jederzeit manuell justiert werden.
-
Die maximale Pixelgrösse bestimmt, wie gross die Pixel maximal werden, wenn sie horizontal im Browserfenster genug Platz haben. Die Grösse kann manuell reduziert werden, um die Anzeige kleiner zu machen, auch wenn sie horizontal genug Platz hätte - z.B. um von eher vertikalen Views (wie die Fackelanimation) mehr zu sehen ohne zu scrollen.
-
Die Refresh-Rate gibt an, wie oft die Pixelanzeige aktualisiert wird. Standardmässig ist 100mS eingestellt, das ist langsamer als die echten LEDs üblicherweise aktualisiert werden (standardmässig alle 15mS), deshalb ruckelt die Simulation. Ein kürzeres Interval einzustellen ist zwar möglich, stösst aber schnell an die Grenzen von Netzwerkverbindung und Geräte-Rechenpower und macht deshalb selten Sinn.
-
Wenn die Netzwerkverbindung langsam ist und die aktuellen Pixel nicht mit kurzer Antwortfrist liefert, geht die Pixelanzeige in den Pause-Modus (muss also mit dem Start-Button wieder gestartet werden). Bei schlechter Netzwerkverbindung ist deshalb u.U. nur Singlestep möglich.
Pixel-Refresh benötigt Rechenpower
Die Pixelanzeige benötigt zusätzliche Rechenpower, besonders wenn ein grosser Bereich dargestellt wird und/oder ein kurzes Refresh-Intervall eingestellt ist. Wenn eine Animation schon an der Performancegrenze des Geräts ist, kann der LED-Simulator zu ruckeliger Darstellung führen. Um eine Animation zu beurteilen, sollte deshalb der LED-Simulator in den Pause-Modus versetzt werden, damit er keine zusätzliche Rechenzeit verbraucht.
View-Inspektor
Im View-Inspektor wird nach jedem Umschalten im View-Hierarchie-Popup und beim Druck auf den Aktualisieren-Button (oder Druck auf F5) der aktuelle View als JSON-Objekt ausgegeben, in dem die Eigenschaften des Views als Felder aufgelistet sind. Bei Views, die ihrerseits wieder subviews haben (Die Typen stack
, scroller
und sequencer
) sind diese als verschachtelte Objekte sichtbar.
Diese JSON-Darstellung entspricht dem Format, in dem Views/View-Hierarchien als .json-File abgespeichert und etwa als Vorlagen mit der configure()
-Funktion eingelesen oder beim Erstellen einer LED-Chain-Leuchte im Feld "Feature Config" angegeben werden können.
View-Eigenschaften ändern
Im View-Inspektor können Eigenschaften von Views (Koordinaten, Farben etc.) direkt geändert werden
-
unter der grün markierten Zeile können Änderungen im gleichen Format wie bei der
configure()
-Funktion eingegeben werden, also als JSON-Objekt:{ "bgcolor": "#332200"}
Zur Vereinfachung der Eingabe können die äusseren Klammern und die Anführungszeichen um den Feldnamen weggelassen werden:
bgcolor: "#332200"
Es können auch mehrere Eigenschaften auf ein Mal gesetzt werden:
x: 2, y:5
-
Werden eine oder mehrere Eigenschaften im Inspektortext markiert und dann Enter gedrückt, werden diese ans Ende (also unter die grün markierte Zeile) kopiert und dann gleich gesetzt. Das ist praktisch, um etwas schon Getipptes wiederzuverwenden.
-
Wird auf einer Eigenschaften-Zeile oberhalb der grün markierten Enter/Return gedrückt, ohne dass Text angewählt ist, wird die Eigenschaft ans Ende kopiert und der Werte gesetzt. Wenn vorher der Wert angepasst wird, ist das eine einfacher Weg um Eigenschaften zu verändern ohne viel zu tippen.
-
Der Inspektor-Inhalt kann mit dem entsprechenden Knopf oder mit Cmd/Ctrl-K gelöscht werden. Dabei bleibt der Eingabebereich (unterhalb der grün markierten Kontextzeile) oder der aktuell selektierte Text erhalten. Es können natürlich auch Teilbereiche selektiert und mit der Löschtaste entfernt werden.
-
Nach jeder Änderung wird die View-Konfiguration neu angezeigt.
-
Anmerkung: In der Konsole der p44script IDE können View-Eigenschaften auch verändert werden, da dort die Views als Objekte aufgefunden (
findview()
), Variablen zugewiesen werden können, und die Felder viaview.eigenschaft
-Notation zur Verfügung stehen. Zudem können Animationen mitanimator()
getestet werden u.a.m. Bei der Entwicklung von komplexeren Effekten mit p44script ist also die Konsole das mächtigere und u.U. besser passende Tool als der Inspektor.