Adafruit_Learning_System_Gu.../Nightlight/cpx_nightlight.py
2018-07-07 13:10:48 -04:00

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)