Skip to content

Commit eb24e61

Browse files
committed
remove use of sin from pulse
1 parent 0d92928 commit eb24e61

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
@@ -44,7 +44,7 @@
4444
"""
4545

4646
import random
47-
from math import ceil, sin, radians
47+
from math import ceil
4848

4949
from . import NANOS_PER_SECOND
5050
from .color import BLACK, RAINBOW
@@ -349,7 +349,8 @@ def __init__(self, pixel_object, speed, color, period=5, max_intensity=1, min_in
349349
self.min_intensity = min_intensity
350350
self._period = period
351351
self._intensity_delta = max_intensity - min_intensity
352-
self._radians_per_second = radians(180 / period)
352+
self._half_period = period / 2
353+
self._position_factor = 1 / self._half_period
353354
self._bpp = len(pixel_object[0])
354355
self._last_update = monotonic_ns()
355356
self._cycle_position = 0
@@ -359,10 +360,10 @@ def draw(self):
359360
now = monotonic_ns()
360361
time_since_last_draw = (now - self._last_update) / NANOS_PER_SECOND
361362
self._last_update = now
362-
self._cycle_position = (self._cycle_position + time_since_last_draw) % self._period
363-
intensity = self.min_intensity + (
364-
sin(self._radians_per_second * self._cycle_position) * self._intensity_delta)
365-
363+
pos = self._cycle_position = (self._cycle_position + time_since_last_draw) % self._period
364+
if pos > self._half_period:
365+
pos = self._period - pos
366+
intensity = self.min_intensity + (pos * self._intensity_delta * self._position_factor)
366367
color = [int(self.color[n] * intensity) for n in range(self._bpp)]
367368
self.fill(color)
368369
self.show()

0 commit comments

Comments
 (0)