from machine import Pin
from neopixel import NeoPixel
from time import sleep
pixel_pin = 22
num_pixels = 16
pixels = NeoPixel(Pin(pixel_pin ), num_pixels)
def wheel(pos):
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)
def rainbow_cycle(wait):
for j in range(0,256,8):
for i in range(num_pixels):
pixel_index = (i * 256 // num_pixels) + j
pixels[i] = wheel(pixel_index & 255)
pixels.write()
sleep(wait)
while True:
pixels.fill((255, 0, 0)); pixels.write(); sleep(1)
pixels.fill((0, 255, 0)); pixels.write(); sleep(1)
pixels.fill((0, 0, 255)); pixels.write(); sleep(1)
rainbow_cycle(0.001) # rainbow cycle with 1ms delay per step