77 lines
2.1 KiB
Python
77 lines
2.1 KiB
Python
import time
|
|
|
|
from adafruit_circuitplayground.express import cpx
|
|
|
|
# Red, green, blue, and simple mixes of 2 or 3.
|
|
# Add your own choices here.
|
|
COLORS = (
|
|
(0, 255, 0),
|
|
(0, 0, 255),
|
|
(255, 0, 0),
|
|
(0, 255, 255),
|
|
(255, 255, 0),
|
|
(255, 0, 255),
|
|
(255, 255, 255),
|
|
)
|
|
|
|
# Light level at which to turn off the nightlight.
|
|
# A typical level might be in the 20's or 30's. You'll need to experiment
|
|
# If you don't want the nightlight to turn off at all, set this to a large number like 9999.
|
|
TURN_OFF = 9999
|
|
|
|
# The NeoPixels are really bright, so limit how bright they can get with MAX_BRIGHTNESS.
|
|
# Increase its value if the nightlight is not bright enough, or decrease if it's
|
|
# too bright even at the lowest setting.
|
|
# MAX_BRIGHTNESS should be <= 1.0.
|
|
MAX_BRIGHTNESS = 0.5
|
|
BRIGHTNESS_STEPS = 15
|
|
|
|
# Start at a low brightness, green, 2 pixels,
|
|
brightness_step = 2
|
|
color_index = 0
|
|
num_pixels = 2
|
|
cpx.pixels.auto_write = False
|
|
|
|
while True:
|
|
if cpx.light > TURN_OFF:
|
|
# Indicate the nightlight is off.
|
|
cpx.red_led = True
|
|
continue
|
|
else:
|
|
cpx.red_led = False
|
|
|
|
# Decrease brightness.
|
|
if cpx.touch_A7:
|
|
# Don't go below 1.
|
|
brightness_step = max(1, brightness_step - 1)
|
|
|
|
# Increase brightness.
|
|
if cpx.touch_A6:
|
|
# Don't go above BRIGHTNESS_STEPS.
|
|
brightness_step = min(BRIGHTNESS_STEPS, brightness_step + 1)
|
|
|
|
# Change color.
|
|
if cpx.touch_A3:
|
|
# Cycle through 0 to len(COLORS)-1 and then wrap around.
|
|
color_index = (color_index + 1) % len(COLORS)
|
|
|
|
# Increase number of pixels.
|
|
if cpx.touch_A5:
|
|
# Don't go below 1.
|
|
num_pixels = max(1, num_pixels - 1)
|
|
|
|
# Decrease number of pixels.
|
|
if cpx.touch_A4:
|
|
# Don't go above 10 (number on CPX).
|
|
num_pixels = min(10, num_pixels + 1)
|
|
|
|
|
|
# Scale brightness to be 0.0 - MAX_BRIGHTNESS.
|
|
cpx.pixels.brightness = (brightness_step / BRIGHTNESS_STEPS) * MAX_BRIGHTNESS
|
|
for i in range(num_pixels):
|
|
cpx.pixels[i] = COLORS[color_index]
|
|
for i in range(num_pixels, 10):
|
|
cpx.pixels[i] = 0
|
|
cpx.pixels.show()
|
|
|
|
time.sleep(0.2)
|