108 lines
2.0 KiB
Python
108 lines
2.0 KiB
Python
COLORS = {
|
|
'OFF': (0, 0, 0),
|
|
'RED': (255, 0, 0),
|
|
'GREEN': (0, 255, 0),
|
|
'BLUE': (0, 0, 255, 0),
|
|
'YELLOW': (255, 150, 0),
|
|
'CYAN': (0, 255, 255),
|
|
'PURPLE': (180, 0, 255),
|
|
'WHITE': (255, 255, 255),
|
|
}
|
|
|
|
|
|
def pixelinit():
|
|
return {
|
|
'h': 0,
|
|
's': 255,
|
|
'v': 255,
|
|
'animation_mode': None,
|
|
'speed': 0,
|
|
'enable': True
|
|
}
|
|
|
|
|
|
def color_chase(pixels, num_pixels, color, color2=COLORS['OFF'], speed=100, animation_state=0):
|
|
if animation_state not in range(num_pixels):
|
|
color = color2
|
|
pixels[int(animation_state - num_pixels)] = color
|
|
|
|
else:
|
|
pixels[animation_state] = color
|
|
|
|
pixels.show()
|
|
animation_state += 1
|
|
|
|
if animation_state >= num_pixels * 2:
|
|
animation_state = 0
|
|
|
|
return animation_state, 0
|
|
|
|
|
|
def sethsv(hue, sat, val, pixels, index):
|
|
r = 0
|
|
g = 0
|
|
b = 0
|
|
# TODO Actually pass this limit to allow overrides
|
|
RGBLIGHT_LIMIT_VAL = 255
|
|
|
|
if val > RGBLIGHT_LIMIT_VAL:
|
|
val=RGBLIGHT_LIMIT_VAL
|
|
|
|
if sat == 0:
|
|
r = val
|
|
g = val
|
|
b = val
|
|
|
|
else:
|
|
base = ((255 - sat) * val) >> 8
|
|
color = (val - base) * (hue % 60) / 60
|
|
|
|
x = hue / 60
|
|
if x == 0:
|
|
r = val
|
|
g = base + color
|
|
b = base
|
|
elif x == 1:
|
|
r = val - color
|
|
g = val
|
|
b = base
|
|
elif x == 2:
|
|
r = base
|
|
g = val
|
|
b = base + color
|
|
elif x == 3:
|
|
r = base
|
|
g = val - color
|
|
b = val
|
|
elif x == 4:
|
|
r = base + color
|
|
g = base
|
|
b = val
|
|
elif x == 5:
|
|
r = val
|
|
g = base
|
|
b = val - color
|
|
|
|
rgb = (r, g, b)
|
|
setrgb(rgb, pixels, index)
|
|
|
|
|
|
def setrgb(rgb, pixels, index):
|
|
pixels[index] = (rgb[0], rgb[1], rgb[2])
|
|
|
|
|
|
def setrgbfill(rgb, pixels):
|
|
pixels.fill(rgb[0], rgb[1], rgb[2])
|
|
|
|
|
|
def increasehue(hue, step):
|
|
return hue + step % 360
|
|
|
|
|
|
def decreasehue(hue, step):
|
|
if hue - step < 0:
|
|
return (hue + 360 - step) % 360
|
|
else:
|
|
return hue - step % 360
|
|
|