Skip to content

Commit 072aad6

Browse files
committed
fix chase bugs
1 parent d5494c2 commit 072aad6

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

adafruit_led_animation/animation.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ def monotonic_ns():
5555
return int(time.time() * 1000000000)
5656

5757
import random
58+
from math import ceil, sin
5859
from .color import BLACK, RAINBOW
5960

6061
__version__ = "0.0.0-auto.0"
@@ -377,7 +378,7 @@ def draw(self):
377378

378379
class Chase(Animation):
379380
"""
380-
Chase pixels in one direction single color.
381+
Chase pixels in one direction in a single color, like a theater marquee sign.
381382
382383
:param pixel_object: The initialised LED object.
383384
:param int speed: Animation speed rate in seconds, e.g. ``0.1``.
@@ -388,11 +389,11 @@ class Chase(Animation):
388389
"""
389390

390391
# pylint: disable=too-many-arguments
391-
def __init__(self, pixel_object, speed, color, size=1, spacing=3, reverse=False):
392+
def __init__(self, pixel_object, speed, color, size=2, spacing=3, reverse=False):
392393
self._size = size
393394
self._spacing = spacing
394395
self._repeat_width = size + spacing
395-
self._num_repeats = len(pixel_object) // self._repeat_width
396+
self._num_repeats = ceil(len(pixel_object) / self._repeat_width)
396397
self._overflow = len(pixel_object) % self._repeat_width
397398
self._direction = 1 if not reverse else -1
398399
self._reverse = reverse
@@ -410,14 +411,14 @@ def reverse(self):
410411
def reverse(self, value):
411412
self._reverse = value
412413
self._direction = -1 if self._reverse else 1
413-
print("Set Reverse", self._reverse, self._direction)
414414

415415
def draw(self):
416-
self._n = (self._n + self._direction) % self._repeat_width
417416
self.pixel_object.fill((0, 0, 0))
418-
for n in range(self._n, self._n + self._size):
417+
for i in range(self._size):
418+
n = (self._n + i) % self._repeat_width
419419
num = self._num_repeats + (1 if n < self._overflow else 0)
420420
self.pixel_object[n::self._repeat_width] = [self.group_color(n) for n in range(num)]
421+
self._n = (self._n + self._direction) % self._repeat_width
421422
self.show()
422423

423424
def group_color(self, n): # pylint: disable=unused-argument

0 commit comments

Comments
 (0)