Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
Jimmy | bb2eedaf89 |
114
patterns.py
114
patterns.py
|
@ -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()
|
|
Loading…
Reference in New Issue