Add basic ws2801 support

This commit is contained in:
James Hodgson
2020-06-25 16:26:59 +01:00
parent 69ee57670a
commit 5079046122
2 changed files with 43 additions and 0 deletions

42
lights/lights_ws2801.py Normal file
View File

@@ -0,0 +1,42 @@
import board
import adafruit_ws2801
class WS2801:
def __init__(self, numleds, brightness, odata=board.MOSI, oclock=board.SCLK):
self.leds = adafruit_ws2801.WS2801(oclock, odata, numleds, brightness=brightness, auto_write=False)
self.values = []
self.brightness = brightness
self.numleds = numleds
def set_leds(self, vals):
if len(vals) == 1:
val = vals[0]
vals = []
for i in range(0, self.numleds):
vals.append(val)
if len(vals) == self.numleds:
for i in range(self.numleds):
self.leds[i] = (
int(vals[i][0] * self.brightness),
int(vals[i][1] * self.brightness),
int(vals[i][2] * self.brightness)
)
self.values = vals
else:
print("Incorrect vals length")
return
self.leds.show()
def set_brightness(self, brightness):
if brightness > 1.0:
brightness = 1.0
elif brightness < 0.0:
brightness = 0.0
self.brightness = brightness
self.set_leds(self.values)

1
requirements.txt Normal file
View File

@@ -0,0 +1 @@
adafruit-circuitpython-ws2801==0.10.1