Adafruit_Learning_System_Gu.../CircuitPlayground_Christmas_Tree/code.py
2022-02-22 15:31:41 -05:00

96 lines
2.5 KiB
Python

# SPDX-FileCopyrightText: 2018 Kattni Rembor for Adafruit Industries
#
# SPDX-License-Identifier: MIT
import time
import board
import neopixel
# On CircuitPlayground Express, and boards with built in status NeoPixel -> board.NEOPIXEL
# Otherwise choose an open pin connected to the Data In of the NeoPixel strip, i.e. board.D1
pixel_pin = board.NEOPIXEL
# On a Raspberry pi, use this instead, not all pins are supported
# pixel_pin = board.D18
# The number of NeoPixels
num_pixels = 10
# Increase or decrease between 0 and 1 to increase or decrease the brightness of the LEDs
brightness = 0.6
# The order of the pixel colors - RGB or GRB. Some NeoPixels have red and green reversed!
# For RGBW NeoPixels, simply change the ORDER to RGBW or GRBW.
ORDER = neopixel.GRB
pixels = neopixel.NeoPixel(pixel_pin, num_pixels, brightness=brightness, auto_write=False,
pixel_order=ORDER)
def colorwheel(pos):
# Input a value 0 to 255 to get a color value.
# The colours are a transition r - g - b - back to r.
# Works with RGB or RGBW LEDs.
if pos < 0 or pos > 255:
r = g = b = 0
elif pos < 85:
r = int(pos * 3)
g = int(255 - pos * 3)
b = 0
elif pos < 170:
pos -= 85
r = int(255 - pos * 3)
g = 0
b = int(pos * 3)
else:
pos -= 170
r = 0
g = int(pos * 3)
b = int(255 - pos * 3)
return (r, g, b) if ORDER in (neopixel.RGB, neopixel.GRB) else (r, g, b, 0)
def rainbow_swirl(wait):
for j in range(255):
for i in range(num_pixels):
pixel_index = (i * 256 // num_pixels) + j
pixels[i] = colorwheel(pixel_index & 255)
pixels.show()
time.sleep(wait)
def rainbow_fill(wait):
for j in range(255):
for i in range(num_pixels):
pixel_index = int(i + j)
pixels[i] = colorwheel(pixel_index & 255)
pixels.show()
time.sleep(wait)
def christmas_flash(duration):
pixels.fill((255, 0, 0))
pixels.show()
time.sleep(duration)
pixels.fill((255, 255, 255))
pixels.show()
time.sleep(duration)
while True:
for _ in range(5):
christmas_flash(0.5)
for _ in range(5):
christmas_flash(0.1)
pixels.fill((255, 0, 0))
pixels.show()
time.sleep(1)
rainbow_fill(0.001) # Increase the number to slow down the rainbow
pixels.fill((0, 0, 0))
pixels.show()
time.sleep(1)
rainbow_swirl(0.001) # Increase the number to slow down the rainbow