diff --git a/patterns.py b/patterns.py deleted file mode 100644 index bc2c030..0000000 --- a/patterns.py +++ /dev/null @@ -1,114 +0,0 @@ -from machine import Pin -from neopixel import NeoPixel -import _thread -import time, math -import sys - -class LedPatterns: - def __init__(self, pin, num_leds): - self.num_leds = num_leds - self.np = NeoPixel(Pin(pin), num_leds) - self.run = True - - def color_chase(self, color, wait): - self.run = True - for i in range(self.num_leds): - self.np[i] = color - self.np.write() - if not run: - break - time.sleep(wait) - - def wheel(self, pos): - if pos < 0 or pos > 255: - return (0, 0, 0) - if pos < 85: - return (255 - pos * 3, pos * 3, 0) - if pos < 170: - pos -= 85 - return (0, 255 - pos * 3, pos * 3) - pos -= 170 - return (pos * 3, 0, 255 - pos * 3) - - def rainbow_cycle(self, wait): - run = True - for j in range(255): - for i in range(self.num_leds): - self.np[i] = self.wheel((i * 256 // self.num_leds) + j) - self.np.write() - if not run: - break - time.sleep(wait) - - def breathing(self, color, duration): - steps = 256 - for _ in range(steps): - brightness = int(255 * abs(steps / 2 - _) / (steps / 2)) - self.np.fill((brightness * color[0] // 255, brightness * color[1] // 255, brightness * color[2] // 255)) - self.np.write() - time.sleep(duration / steps) - - def color_transition(self, start_color, end_color, duration): - steps = 256 - for step in range(steps): - color = ( - int(start_color[0] + (end_color[0] - start_color[0]) * step / steps), - int(start_color[1] + (end_color[1] - start_color[1]) * step / steps), - int(start_color[2] + (end_color[2] - start_color[2]) * step / steps), - ) - self.np.fill(color) - self.np.write() - if not self.running(): - return - time.sleep(duration / steps) - - def scanner(self, color, speed): - position = 0 - direction = 1 - - while True: - self.np.fill((0, 0, 0)) - self.np[position] = color - self.np.write() - time.sleep(speed) - position += direction - if position == self.num_leds - 1 or position == 0: - direction *= -1 - - def bidirectional_scanner(self, color_left, color_right=None, speed=0.1): - color_right = color_right or color_left - position_left = 0 - position_right = self.num_leds - 1 - direction_left = 1 - direction_right = -1 - while True: - self.np.fill((0, 0, 0)) - self.np[position_left] = color_left - self.np[position_right] = color_right - self.np.write() - time.sleep(speed) - - position_left += direction_left - position_right += direction_right - - if position_left == self.num_leds - 1 or position_left == 0: - direction_left *= -1 - if position_right == self.num_leds - 1 or position_right == 0: - direction_right *= -1 - - def sine_wave_propagation(self, color, speed): - frequency = 10 - phase = 0 - while True: - self.np.fill((0, 0, 0)) - for i in range(self.num_leds): - brightness = int(127.5 * (math.sin(frequency * i + phase) + 1)) - self.np[i] = (brightness * color[0] // 255, brightness * color[1] // 255, brightness * color[2] // 255) - self.np.write() - time.sleep(speed) - phase += 0.1 - - def fill(self,color): - for i in range(self.num_leds): - self.np[i] = color - self.np.write()