56 lines
1.2 KiB
Python
56 lines
1.2 KiB
Python
import uasyncio as asyncio
|
|
import machine
|
|
import neopixel
|
|
|
|
WHITE = (140,70,255)
|
|
YELLOW = (127,0,255)
|
|
BLUE = (0,255,0)
|
|
|
|
class LEDs():
|
|
def __init__(self, pin):
|
|
self.neop = neopixel.NeoPixel(machine.Pin(pin, machine.Pin.OUT),5)
|
|
self.rate = 0
|
|
self.clear()
|
|
loop = asyncio.get_event_loop()
|
|
loop.create_task(self._update_async())
|
|
|
|
async def _update_async(self):
|
|
while True:
|
|
if self.rate <= 0:
|
|
await asyncio.sleep_ms(200)
|
|
else:
|
|
self.toggle()
|
|
await asyncio.sleep_ms(int(500 / self.rate))
|
|
|
|
def fill(self,color):
|
|
self.neop.fill(color)
|
|
self.neop[0] = (0,0,0)
|
|
self.neop.write()
|
|
|
|
def clear(self):
|
|
self.fill((0,0,0))
|
|
|
|
|
|
def lower(self,color):
|
|
self.neop[1] = color
|
|
self.neop.write()
|
|
|
|
def right(self,color):
|
|
self.neop[2] = color
|
|
self.neop.write()
|
|
|
|
def upper(self,color):
|
|
self.neop[3] = color
|
|
self.neop.write()
|
|
|
|
def left(self,color):
|
|
self.neop[4] = color
|
|
self.neop.write()
|
|
|
|
def set(self,colors):
|
|
self.neop[0] = (0,0,0)
|
|
for i,c in enumerate(colors):
|
|
self.neop[i+1] = c
|
|
self.neop.write()
|
|
|