def Spiral(): length = len(SPIRAL) for number, val in enumerate(SPIRAL): # up from bottom print("S",number,number/length,val) tree[val].color = Color.from_hsv(0.8,number/length,1).rgb for number, val in reversed(list(enumerate(SPIRAL))): # down from top print("S",number,number/length,val) tree[val].color = Color.from_hsv(0.8,number/length,1).rgb
def red_to_blue(duration): hue = 1.0 t = 0 tree.color = Color.from_hsv(hue, 1.0, 0.5) while t < duration * 20: relt = t % 100 if relt > 50: hue = 1.0 - ((100 - relt) / 50.0 * 0.4) else: hue = 1.0 - (relt / 50.0 * 0.4) tree.color = Color.from_hsv(hue, 1.0, 0.5) t = t + 1 sleep(0.05)
def random_color(): h = random() s = 1 v = 1 hsv = Color.from_hsv(h,s,v) rgb = hsv.rgb # return (rgb)
def random_color(): # You can either use the hsv model (preferred).. h = random() s = 1 v = 1 hsv = Color.from_hsv(h, s, v) rgb = hsv.rgb # # ..or use the rgb model #r = random() #g = random() #b = random() #rgb = Color.from_rgb(r,g,b).rgb # return (rgb)
def lighthouse(duration): t = 0 groups = [[0, 1, 2], [16, 17, 18], [13, 14, 15], [4, 5, 6], [10, 11, 12], [22, 23, 24], [19, 20, 21], [7, 8, 9]] colors = [(1, 1, 0) for x in range(25)] hue = 0 while t < duration * 20: gh = hue for g in groups: for i in g: colors[i] = Color.from_hsv(1.0, 0.0, gh) gh = gh + 0.125 if gh > 1: gh = gh - 1 hue = hue + 1.0 / 45.0 if hue > 1: hue = hue - 1 tree.value = colors t = t + 1 sleep(0.05)
def test_color_from_hsv(): verify_color(Color.from_hsv(0, 0, 0), (0.0, 0.0, 0.0)) verify_color(Color.from_hsv(0, 0, 1), (1.0, 1.0, 1.0)) verify_color(Color.from_hsv(0, 0, 2), (1.0, 1.0, 1.0)) verify_color(Color.from_hsv(0, 1, 1), (1.0, 0.0, 0.0))
"https://thepihut.com/products/3d-rgb-xmas-tree-for-raspberry-pi" " https://github.com/gilesknap/raspitree") parser.add_argument("--brightness", help="brightness for all LEDs", type=float, default=0.1) parser.add_argument("--degrees", help="hue separation between each row", type=int, default=80) parser.add_argument("--pause", help="pause after update in secs", type=float, default=0) args = parser.parse_args() tree.brightness = args.brightness tree.on() hue = 0 while True: for row in order: hue += args.degrees / 360 hue %= 1.0 for pixel_number in row: c = Color.from_hsv(hue, 1.0, 1.0) tree[pixel_number].color = c tree.update() sleep(args.pause)