This commit is contained in:
helgibbons 2022-11-29 18:22:53 +00:00
parent 3b0317b118
commit 7555ac97fd
4 changed files with 17 additions and 19 deletions

View File

@ -1,4 +1,3 @@
import time
import plasma import plasma
from plasma import plasma_stick from plasma import plasma_stick
from math import sin from math import sin
@ -27,16 +26,14 @@ while True:
for i in range(NUM_LEDS): for i in range(NUM_LEDS):
led_strip.set_hsv(i, COLOUR, 1.0, sin(offset)) led_strip.set_hsv(i, COLOUR, 1.0, sin(offset))
offset += 0.002 offset += 0.002
# # our sine wave goes between -1.0 and 1.0 - this means the LEDs will be off half the time # # our sine wave goes between -1.0 and 1.0 - this means the LEDs will be off half the time
# # this formula forces the brightness to be between 0.0 and 1.0 # # this formula forces the brightness to be between 0.0 and 1.0
# for i in range(NUM_LEDS): # for i in range(NUM_LEDS):
# led_strip.set_hsv(i, COLOUR, 1.0, (1 + sin(offset)) / 2) # led_strip.set_hsv(i, COLOUR, 1.0, (1 + sin(offset)) / 2)
# offset += 0.002 # offset += 0.002
# # adjust the saturation instead of the brightness/value # # adjust the saturation instead of the brightness/value
# for i in range(NUM_LEDS): # for i in range(NUM_LEDS):
# led_strip.set_hsv(i, COLOUR, (1 + sin(offset)) / 2, 0.8) # led_strip.set_hsv(i, COLOUR, (1 + sin(offset)) / 2, 0.8)
# offset += 0.002 # offset += 0.002

View File

@ -10,7 +10,7 @@ Adjust SNOW_INTENSITY for more snow.
# Set how many LEDs you have # Set how many LEDs you have
NUM_LEDS = 50 NUM_LEDS = 50
# How much snow? [bigger number = more snowflakes] # How much snow? [bigger number = more snowflakes]
SNOW_INTENSITY = 0.0002 SNOW_INTENSITY = 0.0002
# Change RGB colours here (RGB colour picker: https://g.co/kgs/k2Egjk ) # Change RGB colours here (RGB colour picker: https://g.co/kgs/k2Egjk )
@ -27,6 +27,7 @@ def display_current():
for i in range(NUM_LEDS): for i in range(NUM_LEDS):
led_strip.set_rgb(i, current_leds[i][0], current_leds[i][1], current_leds[i][2]) led_strip.set_rgb(i, current_leds[i][0], current_leds[i][1], current_leds[i][2])
def move_to_target(): def move_to_target():
# nudge our current colours closer to the target colours # nudge our current colours closer to the target colours
for i in range(NUM_LEDS): for i in range(NUM_LEDS):
@ -51,11 +52,11 @@ led_strip.start()
while True: while True:
for i in range(NUM_LEDS): for i in range(NUM_LEDS):
# randomly add snow # randomly add snow
if SNOW_INTENSITY > uniform(0, 1): if SNOW_INTENSITY > uniform(0, 1):
# set a target to start a snowflake # set a target to start a snowflake
target_leds[i] = SNOW_COLOUR target_leds[i] = SNOW_COLOUR
# slowly reset snowflake to background # slowly reset snowflake to background
if current_leds[i] == target_leds[i]: if current_leds[i] == target_leds[i]:
target_leds[i] = BACKGROUND_COLOUR target_leds[i] = BACKGROUND_COLOUR
move_to_target() # nudge our current colours closer to the target colours move_to_target() # nudge our current colours closer to the target colours
display_current() # display current colours to strip display_current() # display current colours to strip

View File

@ -26,6 +26,7 @@ def display_current():
for i in range(NUM_LEDS): for i in range(NUM_LEDS):
led_strip.set_rgb(i, current_leds[i][0], current_leds[i][1], current_leds[i][2]) led_strip.set_rgb(i, current_leds[i][0], current_leds[i][1], current_leds[i][2])
def move_to_target(): def move_to_target():
# nudge our current colours closer to the target colours # nudge our current colours closer to the target colours
for i in range(NUM_LEDS): for i in range(NUM_LEDS):
@ -50,11 +51,11 @@ led_strip.start()
while True: while True:
for i in range(NUM_LEDS): for i in range(NUM_LEDS):
# randomly add sparkles # randomly add sparkles
if SPARKLE_INTENSITY > uniform(0, 1): if SPARKLE_INTENSITY > uniform(0, 1):
# set a target to start a sparkle # set a target to start a sparkle
target_leds[i] = SPARKLE_COLOUR target_leds[i] = SPARKLE_COLOUR
# for any sparkles that have achieved max sparkliness, reset them to background # for any sparkles that have achieved max sparkliness, reset them to background
if current_leds[i] == target_leds[i]: if current_leds[i] == target_leds[i]:
target_leds[i] = BACKGROUND_COLOUR target_leds[i] = BACKGROUND_COLOUR
move_to_target() # nudge our current colours closer to the target colours move_to_target() # nudge our current colours closer to the target colours
display_current() # display current colours to strip display_current() # display current colours to strip

View File

@ -15,11 +15,11 @@ NUM_LEDS = 50
# to convert a hue that's in degrees, divide it by 360 # to convert a hue that's in degrees, divide it by 360
TREE_COLOUR = [0.34, 1.0, 0.6] TREE_COLOUR = [0.34, 1.0, 0.6]
LIGHT_RATIO = 8 # every nth pixel is a light, the rest are tree. LIGHT_RATIO = 8 # every nth pixel is a light, the rest are tree.
LIGHT_COLOURS = ((0.0, 1.0, 1.0), # red LIGHT_COLOURS = ((0.0, 1.0, 1.0), # red
(0.1, 1.0, 1.0), # orange (0.1, 1.0, 1.0), # orange
(0.6, 1.0, 1.0), # blue (0.6, 1.0, 1.0), # blue
(0.85, 0.4, 1.0)) # pink (0.85, 0.4, 1.0)) # pink
LIGHT_CHANGE_CHANCE = 0.5 # change to 0.0 if you want static lights LIGHT_CHANGE_CHANCE = 0.5 # change to 0.0 if you want static lights
# set up the WS2812 / NeoPixel™ LEDs # set up the WS2812 / NeoPixel™ LEDs
led_strip = plasma.WS2812(NUM_LEDS, 0, 0, plasma_stick.DAT, color_order=plasma.COLOR_ORDER_RGB) led_strip = plasma.WS2812(NUM_LEDS, 0, 0, plasma_stick.DAT, color_order=plasma.COLOR_ORDER_RGB)
@ -27,17 +27,16 @@ led_strip = plasma.WS2812(NUM_LEDS, 0, 0, plasma_stick.DAT, color_order=plasma.C
# start updating the LED strip # start updating the LED strip
led_strip.start() led_strip.start()
#initial setup # initial setup
for i in range(NUM_LEDS): for i in range(NUM_LEDS):
if i % LIGHT_RATIO == 0: # add an appropriate number of lights if i % LIGHT_RATIO == 0: # add an appropriate number of lights
led_strip.set_hsv(i, *choice(LIGHT_COLOURS)) ## choice randomly chooses from a list led_strip.set_hsv(i, *choice(LIGHT_COLOURS)) # choice randomly chooses from a list
else: # GREEN else: # GREEN
led_strip.set_hsv(i, *TREE_COLOUR) led_strip.set_hsv(i, *TREE_COLOUR)
# animate # animate
while True: while True:
for i in range(NUM_LEDS): for i in range(NUM_LEDS):
if (i % LIGHT_RATIO == 0) and (random() < LIGHT_CHANGE_CHANCE): if (i % LIGHT_RATIO == 0) and (random() < LIGHT_CHANGE_CHANCE):
led_strip.set_hsv(i, *choice(LIGHT_COLOURS)) led_strip.set_hsv(i, *choice(LIGHT_COLOURS))
time.sleep(0.5) time.sleep(0.5)