some new functionality

This commit is contained in:
2023-08-06 15:36:32 -05:00
parent bf41229e80
commit d9627dfd1f

50
main.py
View File

@@ -1,4 +1,4 @@
from machine import Pin, PWM, freq from machine import Pin, PWM
from time import sleep from time import sleep
U16_MAX = 65535 U16_MAX = 65535
@@ -10,14 +10,27 @@ class Color:
def duty_u16(self, duty): def duty_u16(self, duty):
self.pin.duty_u16(duty) self.pin.duty_u16(duty)
def breathe(self): def breathe(self, interval=0.0001):
for duty in range(0, U16_MAX, 20): for duty in range(0, U16_MAX, 20):
self.duty_u16(duty) self.duty_u16(duty)
sleep(0.0001) sleep(interval)
for duty in range(U16_MAX, 0, -20): for duty in range(U16_MAX, 0, -20):
self.duty_u16(duty) self.duty_u16(duty)
sleep(0.0001) sleep(interval)
class RGB:
"""
Convert a traditional (8-bit) RGB color to a 16-bit color
"""
def __init__(self, r, g, b):
self.r = r * 256
self.g = g * 256
self.b = b * 256
def to_u16(self):
return self.r, self.g, self.b
class StripLights: class StripLights:
@@ -36,10 +49,10 @@ class StripLights:
self.G.duty_u16(0) self.G.duty_u16(0)
self.B.duty_u16(0) self.B.duty_u16(0)
def breathe(self): def breathe(self, sleep_interval=0.0001):
self.R.breathe() self.R.breathe(sleep_interval)
self.G.breathe() self.G.breathe(sleep_interval)
self.B.breathe() self.B.breathe(sleep_interval)
def blink(self, sleep_interval=1): def blink(self, sleep_interval=1):
self.on() self.on()
@@ -49,7 +62,9 @@ class StripLights:
print('off') print('off')
sleep(sleep_interval) sleep(sleep_interval)
def set_color(self, r, g, b): def set_color(self, rgb):
r, g, b = rgb
if (r < 0 or r > U16_MAX): if (r < 0 or r > U16_MAX):
raise "Red value out of accepted range" raise "Red value out of accepted range"
@@ -63,10 +78,25 @@ class StripLights:
self.G.duty_u16(g) self.G.duty_u16(g)
self.B.duty_u16(b) self.B.duty_u16(b)
def color_cycle(self, color_list, sleep_interval=1):
for color in color_list:
self.set_color(color)
sleep(sleep_interval)
COLORS = {
'PURPLE': RGB(255, 0, 255),
'RED': RGB(255, 0, 0),
'GREEN': RGB(0, 255, 0),
'BLUE': RGB(0, 0, 255)
}
def main(): def main():
lights = StripLights() lights = StripLights()
while True: while True:
lights.blink() lights.color_cycle([color.to_u16() for color in COLORS.values()])
# while True:
# lights.breathe(0.01)
main() main()