37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
import random
|
|
from adafruit_led_animation.animation.rainbowcomet import RainbowComet
|
|
from adafruit_led_animation.helper import PixelMap
|
|
from adafruit_led_animation.group import AnimationGroup
|
|
from neopio import NeoPIO
|
|
import board
|
|
|
|
# Customize for your strands here
|
|
num_strands = 8
|
|
strand_length = 30
|
|
|
|
# Make the object to control the pixels
|
|
pixels = NeoPIO(board.GP0, board.GP1, board.GP2, num_strands*strand_length,
|
|
num_strands=num_strands, auto_write=False, brightness=.18)
|
|
|
|
# Make a virtual PixelMap so that each strip can be controlled independently
|
|
strips = [PixelMap(pixels, range(i*strand_length, (i+1)*strand_length), individual_pixels=True)
|
|
for i in range(num_strands)]
|
|
|
|
# This function makes a comet animation with slightly random settings
|
|
def make_animation(strip):
|
|
speed = (1+random.random()) * 0.02
|
|
length = random.randrange(18, 22)
|
|
bounce = random.random() > .5
|
|
offset = random.randint(0, 255)
|
|
return RainbowComet(strip, speed=speed, tail_length=length, bounce=bounce,
|
|
colorwheel_offset=offset)
|
|
|
|
# Make an animation for each virtual strip
|
|
animations = [make_animation(strip) for strip in strips]
|
|
|
|
# Put the animations into a group so that we can animate them together
|
|
group = AnimationGroup(*animations, )
|
|
|
|
# Show the animations forever
|
|
while True:
|
|
group.animate()
|