led-server/rgbUtils/WS2812Strip.py
2018-12-29 18:59:48 +01:00

62 lines
1.7 KiB
Python

from rgbUtils.debug import debug
from rgbUtils.RGBStrip import RGBStrip
# The WS2812Strip must have the same behavior as the 12v rgb strip,
# plus some extras for these type of strips only.
# A WS1812 Strip can be initialised as multiple RGB Strips by defining
# the start and the end led's. lets's see how that goes
class WS2812Strip(RGBStrip):
STRIP_NAME = None
master = None
FIRST_LED = None
LAST_LED = None
def __init__(self,STRIP_NAME,FIRST_LED,LAST_LED,WS2812B_MASTER_STRIP):
self.STRIP_NAME = STRIP_NAME
self.master = WS2812B_MASTER_STRIP
self.FIRST_LED = FIRST_LED
self.LAST_LED = LAST_LED
# init the WS2812 part. since the master sets all pixel to 0 in init,
# we have nothing to do here.
def init(self):
if not self.issetup:
debug("setting up")
self.issetup = True
def RGB(self,red,green,blue,brightness = 100):
if(red < 0):
red = 0
if(red > 255):
red = 255
if(green < 0):
green = 0
if(green > 255):
green = 255
if(blue < 0):
blue = 0
if(blue > 255):
blue = 255
green = 255
if(brightness < 0):
brightness = 0
if(brightness > 255):
brightness = 100
self.red = red
self.green = green
self.blue = blue
self.master.setPixelColorRange(self.FIRST_LED,self.LAST_LED, int(round(red/100*brightness)), int(round(green/100*brightness)), int(round(blue/100*brightness)))
def stop(self):
self.master.setPixelColorRange(self.FIRST_LED,self.LAST_LED, 0, 0,0)