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

Der Patternmover

Dieses Modul unterstützt das Anwender-Programm bei der Darstellung von sich bewegenden Mustern, indem es die Position (pdp_startled) der Patterns abhängig von der Zeit ändert. Dafür gibt es in der Pattern-Datenstruktur das Element "pm_speed", wo der Wert für die Bewegungsgeschwindigkeit eingetragen wird (in Pixel bzw. Schritten pro Sekunde, wird noch mit SPEEDFACTOR multipliziert). Bei 0 bleibt das Pattern stehen, bei positiven Werten wandert es in Richtung Ende der LED-Kette, bei negativen Werten entgegengesetzt.
Falls Microsteps für das jeweilige Muster aktiviert werden, bezieht sich der Speed-Wert auf Schritte statt Pixel, daher ist die Geschwindigkeit mit Microsteps auf 1/8 reduziert gegenüber Patterns ohne Microsteps mit gleichen pm_speed-Werten. 

Der Patternmover setzt pm_speed auf 0, sobald ein Pattern vollständig aus der LED-Kette herausgelaufen ist.
Falls "wrapping" aktiviert ist, läuft das Pattern über das Ende der LED-Kette wieder am Anfang der Kette hinein (pm_speed > 0)  bzw. über den Anfang wieder am Ende hinein (pm_speed < 0). Wenn zusätzlich auch "tiling" aktiviert ist, ergibt sich eine endlose Kette von aneinandergereihten Patterns, die endlos über den LED-Streifen laufen (klassischer Lauflicht-Effekt).
Der Patternmover hält dabei die Zielposition (pdp_startled) im Bereich der LED-Kettenlänge, so daß keine Gefahr eines Überlaufs (-32768 <-> 32767) bei längerem Betrieb besteht.
   
Wenn der Patternmover-Code eingebunden ist (mit "#define USE_PATMOVER"), wird der Patternmover automatisch durch den Patternprozessor aufgerufen. Das Anwender-Programm muss also lediglich den Geschwindigkeits-Wert in pm_speed eintragen.

 
Weiter geht's mit dem Microstep-Modul.


Kontakt