Create the Neopixel library

master
Ryan Rix 7 years ago
parent d6d54b05da
commit 2b718f29c3

@ -10,15 +10,15 @@ class Lightrix:
self.matrix = matrix
self.patterns = {}
self.patterns[u'red'] = lambda ix: (255, 0, 0)
self.patterns[u'green'] = lambda ix: (0, 255, 0)
self.patterns[u'blue'] = lambda ix: (0, 0, 255)
self.patterns[u'yellow'] = lambda ix: (255, 255, 0)
self.patterns[u'white'] = lambda ix: (255, 255, 255)
self.patterns[u'off'] = lambda ix: (0,0,0)
self.patterns[u'purple'] = lambda ix: (255,0,255)
self.patterns[u'cyan'] = lambda ix: (0,255,255)
self.patterns[u'rainbow'] = lambda ix: self.wheel(int(255 * ix / self.strip.count()))
self.patterns[u'red'] = lambda ix, msg: (255, 0, 0)
self.patterns[u'green'] = lambda ix, msg: (0, 255, 0)
self.patterns[u'blue'] = lambda ix, msg: (0, 0, 255)
self.patterns[u'yellow'] = lambda ix, msg: (255, 255, 0)
self.patterns[u'white'] = lambda ix, msg: (255, 255, 255)
self.patterns[u'off'] = lambda ix, msg: (0,0,0)
self.patterns[u'purple'] = lambda ix, msg: (255,0,255)
self.patterns[u'cyan'] = lambda ix, msg: (0,255,255)
self.patterns[u'rainbow'] = lambda ix, msg: self.wheel(int(255 * ix / self.strip.count()))
self.patterns[u'cycle'] = self.rainbowCycle
self.patterns[u'timebase'] = self.timebased
self.patterns[u'wheel'] = self.wheelStrip
@ -35,7 +35,7 @@ class Lightrix:
def set_pattern(self, pattern, msg=None):
for led_idx in range(0, self.strip.count()):
color = pattern(led_idx)
color = pattern(led_idx, msg)
self.strip.setPixelRgb(led_idx, color[0], color[1], color[2])
self.strip.show()
for room_id in self.matrix.room_ids:
@ -49,7 +49,9 @@ class Lightrix:
if not chunk[u'content'].get(u'body'):
return
text = chunk[u'content'][u'body'].lower()
room = self.matrix.rooms[str(chunk[u'room_id'])]
room = self.matrix.rooms.get(str(chunk[u'room_id']))
if not room:
return
if text.startswith("!brightness"):
brightness = int(text.split(' ')[1])
room.send_text("Setting brightness to %s/255" % brightness)
@ -69,8 +71,7 @@ class Lightrix:
self.set_pattern(self.patterns[text])
def wheel(pos):
def wheel(self, pos):
"""Generate rainbow colors across 0-255 positions."""
if pos < 85:
return (pos * 3, 255 - pos * 3, 0)

@ -0,0 +1,36 @@
# lightrix ws281x interface
import colorsys
import neopixel as np
class Strip(object):
def __init__(self, count=48, pin=18, freq_hz=800000,
dma=10, brightness=255, invert=False):
self.led_count = count
self.led_pin = pin
self.led_freq_hz = freq_hz
self.led_dma = dma
self.led_brightness = brightness
self.led_invert = invert
self.strip = np.Adafruit_NeoPixel(self.led_count, self.led_pin, self.led_freq_hz,
self.led_dma, self.led_invert, self.led_brightness)
def setPixelHsl(self, ix, hue, saturation, lightness):
rgb = colorsys.hls_to_rgb(hue, lightness, saturation)
self.setPixelRgb(ix, rgb[0], rgb[1], rgb[2])
def setPixelRgb(self, ix, r,g,b):
self.setPixelColor(ix, np.Color((r,g,b)))
def getPixel(self, ix):
return self.getPixelColor(ix)
def begin(self):
self.strip.begin()
def count(self):
return self.led_count
def show(self):
self.strip.show()
Loading…
Cancel
Save