import time
import board
import adafruit_nunchuk
import neopixel
import simpleio
nc = adafruit_nunchuk.Nunchuk(board.I2C())
# create neopixel object
NEOPIN = board.D6
NEOLENGTH = 60
NEOORDER = neopixel.GRBW # set to GRB for 'regular' RGB NeoPixels
pixels = neopixel.NeoPixel(
NEOPIN, NEOLENGTH, brightness=0.1, auto_write=False, pixel_order=NEOORDER
)
RED = (220, 0, 0)
PURPLE = (80, 0, 160)
PINK = (100, 0, 80)
GREEN = (0, 180, 0)
CYAN = (0, 80, 100)
BLUE = (0, 0, 255)
BLACK = (0, 0, 0)
COLORS = [RED, PURPLE, PINK, GREEN, CYAN, BLUE]
pix = 0 # selected pixel
color_pick = 0 # current color index
pixels.fill(BLACK)
pixels.show()
while True:
x, y = nc.joystick # get joystick values
ax, ay, az = nc.acceleration # get accelerometer values
tilt_x = simpleio.map_range(ax, 300.0, 800.0, 0.0, 1.0) # remap tilt to brightness
# remap y to current pixel
pix = int(
simpleio.map_range(y, 0, 255, 0, NEOLENGTH - 1)
)
if nc.button_C: # hold C button to use tilt for brightness
pixels.brightness = tilt_x
if nc.button_Z:
color_pick = (color_pick + 1) % 4 # cycle through colors
time.sleep(0.02) # debounce
pixels.fill(BLACK) # turn off pixels
for i in range(0, pix + 1): # light up all pixels up to the current one
pixels[i] = COLORS[color_pick]
pixels.show()