strips
This commit is contained in:
parent
4e84992148
commit
2b8abfc4c6
1 changed files with 14 additions and 20 deletions
34
leds.py
34
leds.py
|
@ -244,8 +244,8 @@ class Adafruit_CharLCD:
|
|||
else:
|
||||
self.write4bits(ord(char), True)
|
||||
|
||||
def defaultPattern(n):
|
||||
return (n % 255, n % 255, n % 255)
|
||||
def defaultPattern(n, t):
|
||||
return ((n + t) % 255, (n + t) % 255, (n + t) % 255)
|
||||
|
||||
class LightStrip:
|
||||
def __init__(self, data_pin = board.D18, string_length = 300, brightness = 1, pixel_order = neopixel.GRB):
|
||||
|
@ -254,17 +254,22 @@ class LightStrip:
|
|||
|
||||
self.np = neopixel.NeoPixel(data_pin, string_length, brightness = brightness, auto_write=False, pixel_order = pixel_order)
|
||||
self.pattern = defaultPattern
|
||||
self.tick = 0
|
||||
|
||||
def set_light_level(self, level):
|
||||
self.np.brightness = level
|
||||
def pattern(self, pattern_callback):
|
||||
self.pattern = pattern_callback
|
||||
|
||||
def tick(self):
|
||||
np = self.np
|
||||
t = self.tick
|
||||
n = np.n
|
||||
for i in range(n):
|
||||
col = self.pattern(i)
|
||||
col = self.pattern(i, t)
|
||||
if np[i] != col:
|
||||
np[i] = col
|
||||
self.tick = t + 1
|
||||
|
||||
debug_statements = True
|
||||
|
||||
|
@ -285,17 +290,12 @@ def querylightlevel():
|
|||
return 7
|
||||
|
||||
|
||||
def color(lcd, col):
|
||||
def color(lcd):
|
||||
lcd.clear()
|
||||
lcd.message("new color:\n#{}".format(col))
|
||||
lcd.message("new pattern loaded.")
|
||||
debug("NYI")
|
||||
|
||||
|
||||
def querycolor():
|
||||
debug("NYI")
|
||||
return "ffffff"
|
||||
|
||||
|
||||
def loop():
|
||||
lcd = Adafruit_CharLCD()
|
||||
lights = LightStrip()
|
||||
|
@ -303,22 +303,16 @@ def loop():
|
|||
level_max = 14
|
||||
idle = 0
|
||||
idle_max = 15
|
||||
cur_color = "ffffff"
|
||||
cur_color = (255, 255, 255)
|
||||
while True:
|
||||
debug("loop")
|
||||
query_color = querycolor()
|
||||
query_level = querylightlevel()
|
||||
idle = idle + 1
|
||||
debug("idle value: {}".format(idle))
|
||||
|
||||
if query_color != cur_color:
|
||||
if lcd.displaycontrol & lcd.LCD_DISPLAYON != lcd.displaycontrol:
|
||||
lcd.display()
|
||||
ccolor = query_color
|
||||
idle = 0
|
||||
color(lcd, cur_color)
|
||||
elif query_level != level:
|
||||
lights.tick()
|
||||
if query_level != level:
|
||||
level = query_level
|
||||
lights.set_light_level(level / level_max)
|
||||
idle = 0
|
||||
if lcd.displaycontrol & lcd.LCD_DISPLAYON != lcd.displaycontrol:
|
||||
lcd.display()
|
||||
|
|
Loading…
Reference in a new issue