import machine, neopixel
import time
n = 16 #number of pixels
p = 15 #Pin of data
np = neopixel.NeoPixel(machine.Pin(p), n)
# np[0] = (255, 0, 0)
# np[3] = (125, 204, 223)
# np[7] = (120, 153, 23)
# np[10] = (255, 0, 153)
# np.write()
def clear():
for i in range(n):
np[i] = (0, 0, 0)
np.write()
def set_color(r, g, b):
for i in range(n):
np[i] = (r, g, b)
np.write()
def bounce(r, g, b, wait):
for i in range(4 * n):
for j in range(n):
np[j] = (r, g, b)
if (i // n) % 2 == 0:
np[i % n] = (0, 0, 0)
else:
np[n - 1 - (i % n)] = (0, 0, 0)
np.write()
time.sleep_ms(wait)
def cycle(r, g, b, wait):
for i in range(4 * n):
for j in range(n):
np[j] = (0, 0, 0)
np[i % n] = (r, g, b)
np.write()
time.sleep_ms(wait)
def wheel(pos):
#Input a value 0 to 255 to get a color value.
#The colours are a transition r - g - b - back to r.
if pos < 0 or pos > 255:
return (0, 0, 0)
if pos < 85:
return (255 - pos * 3, pos * 3, 0)
if pos < 170:
pos -= 85
return (0, 255 - pos * 3, pos * 3)
pos -= 170
return (pos * 3, 0, 255 - pos * 3)
def rainbow_cycle(wait):
for j in range(255):
for i in range(n):
rc_index = (i * 256 // n) + j
np[i] = wheel(rc_index & 255)
np.write()
time.sleep_ms(wait)
set_color(255, 0 ,0)
time.sleep_ms(2000)
clear()
time.sleep_ms(1000)
bounce(0, 255, 0, 100)
clear()
time.sleep_ms(1000)
cycle(0, 0, 255, 100)
clear()
time.sleep_ms(1000)
wheel(100)
clear()
time.sleep_ms(1000)
rainbow_cycle(100)
time.sleep_ms(2000)
clear()