51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
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()
|