PIC2WS2812 | Steuerung von WS2812-LEDs mit 8-Bit PIC Microcontroller | |
GrundlagenPIC LösungSoftware-Module:Defines |
Der PatternmoverDieses 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 |