@@ -55,6 +55,7 @@ def monotonic_ns():
55
55
return int (time .time () * 1000000000 )
56
56
57
57
import random
58
+ from math import ceil , sin
58
59
from .color import BLACK , RAINBOW
59
60
60
61
__version__ = "0.0.0-auto.0"
@@ -377,7 +378,7 @@ def draw(self):
377
378
378
379
class Chase (Animation ):
379
380
"""
380
- Chase pixels in one direction single color.
381
+ Chase pixels in one direction in a single color, like a theater marquee sign .
381
382
382
383
:param pixel_object: The initialised LED object.
383
384
:param int speed: Animation speed rate in seconds, e.g. ``0.1``.
@@ -388,11 +389,11 @@ class Chase(Animation):
388
389
"""
389
390
390
391
# 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 ):
392
393
self ._size = size
393
394
self ._spacing = spacing
394
395
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 )
396
397
self ._overflow = len (pixel_object ) % self ._repeat_width
397
398
self ._direction = 1 if not reverse else - 1
398
399
self ._reverse = reverse
@@ -410,14 +411,14 @@ def reverse(self):
410
411
def reverse (self , value ):
411
412
self ._reverse = value
412
413
self ._direction = - 1 if self ._reverse else 1
413
- print ("Set Reverse" , self ._reverse , self ._direction )
414
414
415
415
def draw (self ):
416
- self ._n = (self ._n + self ._direction ) % self ._repeat_width
417
416
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
419
419
num = self ._num_repeats + (1 if n < self ._overflow else 0 )
420
420
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
421
422
self .show ()
422
423
423
424
def group_color (self , n ): # pylint: disable=unused-argument
0 commit comments