Files
iot/main.py

73 lines
1.5 KiB
Python

from machine import Pin, PWM, freq
from time import sleep
U16_MAX = 65535
class Color:
def __init__(self, gpnum):
self.pin = PWM(Pin(gpnum))
def duty_u16(self, duty):
self.pin.duty_u16(duty)
def breathe(self):
for duty in range(0, U16_MAX, 20):
self.duty_u16(duty)
sleep(0.0001)
for duty in range(U16_MAX, 0, -20):
self.duty_u16(duty)
sleep(0.0001)
class StripLights:
def __init__(self):
self.B = Color(10)
self.R = Color(11)
self.G = Color(12)
def on(self):
self.R.duty_u16(U16_MAX)
self.G.duty_u16(U16_MAX)
self.B.duty_u16(U16_MAX)
def off(self):
self.R.duty_u16(0)
self.G.duty_u16(0)
self.B.duty_u16(0)
def breathe(self):
self.R.breathe()
self.G.breathe()
self.B.breathe()
def blink(self, sleep_interval=1):
self.on()
print('on')
sleep(sleep_interval)
self.off()
print('off')
sleep(sleep_interval)
def set_color(self, r, g, b):
if (r < 0 or r > U16_MAX):
raise "Red value out of accepted range"
if (g < 0 or r > U16_MAX):
raise "Green value out of accepted range"
if (b < 0 or b > U16_MAX):
raise "Blue value out of accepted range"
self.R.duty_u16(r)
self.G.duty_u16(g)
self.B.duty_u16(b)
def main():
lights = StripLights()
while True:
lights.blink()
main()