diff options
Diffstat (limited to 'bridge.py')
| -rw-r--r-- | bridge.py | 90 |
1 files changed, 23 insertions, 67 deletions
@@ -1,87 +1,43 @@ -#!/usr/bin/python +#!/usr/bin/python2 """Simple demo of oscillating colors.""" -from __future__ import division +from __future__ import division, unicode_literals import color -import colorsys -from DummyRig import DummyRig #import lumiversepython -import math -import random +import constants +from DummyRig import DummyRig +import fish_render import time - -FRAME_RATE = 10 #44 -MIN_VALUE = 0 -MAX_VALUE = 1 -MAX_TIME = 4 -MIN_TIME = 0.3 -MAX_HUE = 230 / 360 -MIN_HUE = 250 / 360 - -class Panel(object): - def __init__(self, light): - self.light = light - self.current_color = color.RGB(0, 0, 0) - self.target_color = color.RGB(0, 0, 0) - self.delta = color.RGB(1, 1, 1) - - def begin_transition(self, target_color, delta_ticks): - self.target_color = target_color - self.delta = (self.target_color - self.current_color) / delta_ticks - - def tick(self): - self.current_color = self.current_color + self.delta - self.light.setRGBRaw(*self.current_color.components) - - def transition_complete(self): - return abs(self.current_color - self.target_color) < abs(self.delta) - - +try: + import lumiversepython +except ImportError: + have_lumiversepython = False +else: + have_lumiversepython = True def get_all_lights(rig): """Return a list of all panels.""" return [ - Panel(rig.select('$side={}[$sequence={}]'.format(j, i))) - for j in ['top', 'bot'] for i in range(1, 200) + [ + rig.select('$side={y}[$sequence={x}]'.format({'y': y, 'x': x})) + for y in ('top', 'bot') + ] for x in xrange(1, 200) ] -def pick_HSV(): - """Return a random color in an appropriate interval.""" - hue = random.random() * (MAX_HUE - MIN_HUE) + MIN_HUE - saturation = random.random() * (1 - 0.63) + 0.63 - value = random.random() - return color.HSV(hue, saturation, value) - - -def transition(start, end, step): - """Return a vector equal to (end - start) * step + start.""" - return (end - start) / abs(end - start) * step + start - - -def random_change(): - """Return a random number of ticks for a light to change""" - min_ticks = int(MIN_TIME * FRAME_RATE) - max_ticks = int(MAX_TIME * FRAME_RATE) - return random.randint(min_ticks, max_ticks) - - def demo(lights, rig): """Do some light things.""" + fish = fish_render.Fish(0, 0, 2, 1, color.red, 1 / constants.FRAME_RATE) + bridge = fish_render.Bridge(lights, fish, rig) while True: - print "Tick" - for light in lights: - if light.transition_complete(): - if( light == lights[0] ): - print "Transition complete!" - light.begin_transition(pick_HSV().to_RGB(), random_change()) - light.tick() - - rig.updateOnce() - time.sleep(1 / FRAME_RATE) + bridge.update() + time.sleep(1 / constants.FRAME_RATE) def main(): """Run show.""" - rig = DummyRig(200, 2) #lumiversepython.Rig('/home/teacher/Lumiverse/PBridge.rig.json') + if have_lumiversepython: + rig = lumiversepython.Rig('/home/teacher/Lumiverse/PBridge.rig.json') + else: + rig = DummyRig(200, 2) rig.init() lights = get_all_lights(rig) demo(lights, rig) |
