Add basic ws2801 support
This commit is contained in:
42
lights/lights_ws2801.py
Normal file
42
lights/lights_ws2801.py
Normal 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
1
requirements.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
adafruit-circuitpython-ws2801==0.10.1
|
||||||
Reference in New Issue
Block a user