PIC2WS2812 Steuerung von WS2812-LEDs mit 8-Bit PIC Microcontroller
Grundlagen
PIC Lösung
Software-Module:
Basis
Patternprozessor
Patternmover
Microstep
Timer
Demo
Defines

Microstepping

Besonders bei langsamen Bewegungen der Muster ergibt sich normalerweise durch das LED-Raster ein "ruckeliger" Bewegungseindruck. Das Microstepping-Modul erlaubt eine (virtuell) feinere Positionierung des Lichtmusters, als in ganzen LED- bzw. Pixel-Nummern. Dadurch kann ein deutlich flüssigerer Bewegungseindruck erreicht werden. Aber auch bei anderen Anwendungen (z.B. LED-Balkenanzeigen) kann das Microstepping zur Darstellung von Zwischenwerten nützlich sein.

Dazu wird zu der eigentlichen Pixel-Position (pdp_startled) noch ein Offset als Bruchteil eines ganzen Pixelschrittes (hier: 1/8-Schritt) addiert. Dieser Offset wird in pdp_substep als Zahl zwischen 0 und 7 (= 0 ...7/8) gespeichert. Um z.B. den Anfang des Musters genau in die Mitte zwischen den LEDs #24 und #25 zu positionieren, wird (pdp_startled) mit 24 geladen und noch ein halber Pixelschritt (= 4/8) als Offset dazuaddiert, indem  (pdp_substep) mit 4 geladen wird.

Der Patternprozessor berechnet die LED-Daten der Zwischenschritte, indem er die GRB-Werte vom Source-Pattern linear interpoliert. Zur Interpolation wird immer das aktuelle Pixel (n) und das vorherige Pixel (n-1) herangezogen. Da das erste Pixel (#0) eines Patterns ja normalerweise keinen Vorgänger hat, muss bei Mustern, die für Microstepping benutzt werden sollen, im Speicher noch ein zusätzliches Pixel vor dem eigentlichen Startpixel des Patterns abgelegt werden!

Grenzen und Einschränkungen:
Eine echte Interpolationslösung müsste ggf. auch Hintergrundfarbe und Farbwerte, die sich durch Mischungen mit anderen Pattern-Ebenen ergeben, berücksichtigen. Das wäre aber sehr kompliziert und langsam, so beschränkt sich diese Interpolation nur auf die Farbwerte das aktuellen Source-Patterns. Je nach Bedingungen (Blend-Mode, Hintergrundfarbe, Farbe des letzten Pixels und des Zusatz-Pixels(-1)), kann es deshalb sein, daß am Rand des dargestellten Patterns Farbsprünge auftreten.



Weiter geht's mit dem Timer.


Kontakt