Skip to content

Commit 4621212

Browse files
committed
fix chase
1 parent 2db4899 commit 4621212

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

adafruit_led_animation/animation.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -382,13 +382,18 @@ class Chase(Animation):
382382
:param pixel_object: The initialised LED object.
383383
:param int speed: Animation speed rate in seconds, e.g. ``0.1``.
384384
:param color: Animation color in ``(r, g, b)`` tuple, or ``0x000000`` hex format.
385-
:param size: Number of pixels per chase group.
386-
:param reverse: Reverse direction.
385+
:param size: Number of pixels to turn on in a row.
386+
:param spacing: Number of pixels to turn off in a row.
387+
:param reverse: Reverse direction of movement.
387388
"""
388389

389390
# pylint: disable=too-many-arguments
390-
def __init__(self, pixel_object, speed, color, size=3, reverse=False):
391-
self._size = size * 2
391+
def __init__(self, pixel_object, speed, color, size=1, spacing=3, reverse=False):
392+
self._size = size
393+
self._spacing = spacing
394+
self._repeat_width = size + spacing
395+
self._num_repeats = len(pixel_object) // self._repeat_width
396+
self._overflow = len(pixel_object) % self._repeat_width
392397
self._direction = 1
393398
self._reverse = reverse
394399
self._n = 0
@@ -405,14 +410,14 @@ def reverse(self):
405410
def reverse(self, value):
406411
self._reverse = value
407412
self._direction = -1 if self._reverse else 1
413+
print("Set Reverse", self._reverse, self._direction)
408414

409415
def draw(self):
410-
self._n = (self._n + 1) % self._size
411-
n = self._n
412-
size = self._size
413-
half_size = size // 2
414-
for i in range(len(self.pixel_object)):
415-
self.pixel_object[i] = self.color if ((i + n) % size) < half_size else (0, 0, 0)
416+
self._n = (self._n + self._direction) % self._repeat_width
417+
self.pixel_object.fill((0, 0, 0))
418+
for n in range(self._n, self._n + self._size):
419+
num = self._num_repeats + (1 if n < self._overflow else 0)
420+
self.pixel_object[n::self._repeat_width] = [self.color] * num
416421
self.show()
417422

418423

0 commit comments

Comments
 (0)