import time
from neopixel import Neopixel
from rotary_irq_rp2 import RotaryIRQ
import machine
max_brightness = 255
button_r = machine.Pin(3, machine.Pin.IN, machine.Pin.PULL_UP)
enc_r = RotaryIRQ(pin_num_clk=5,
pin_num_dt=4,
min_val=0,
max_val=max_brightness,
incr=4,
reverse=True,
range_mode=RotaryIRQ.RANGE_BOUNDED)
button_g = machine.Pin(0, machine.Pin.IN, machine.Pin.PULL_UP)
enc_g = RotaryIRQ(pin_num_clk=2,
pin_num_dt=1,
min_val=0,
max_val=max_brightness,
incr=4,
reverse=True,
range_mode=RotaryIRQ.RANGE_BOUNDED)
button_b = machine.Pin(28, machine.Pin.IN, machine.Pin.PULL_UP)
enc_b = RotaryIRQ(pin_num_clk=26,
pin_num_dt=27,
min_val=0,
max_val=max_brightness,
incr=4,
reverse=True,
range_mode=RotaryIRQ.RANGE_BOUNDED)
pixels = Neopixel(17, 0, 6, "GRB")
light_index = 0
r_index = 3
g_index = 2
b_index = 1
old_button_r = False
old_button_g = False
old_button_b = False
while True:
new_button_r = not button_r.value()
new_button_g = not button_g.value()
new_button_b = not button_b.value()
if new_button_r and not old_button_r:
if enc_r.value() >= max_brightness:
enc_r.set(value = 0)
else:
enc_r.set(value = max_brightness)
if new_button_g and not old_button_g:
if enc_g.value() >= max_brightness:
enc_g.set(value = 0)
else:
enc_g.set(value = max_brightness)
if new_button_b and not old_button_b:
if enc_b.value() >= max_brightness:
enc_b.set(value = 0)
else:
enc_b.set(value = max_brightness)
r = enc_r.value()
g = enc_g.value()
b = enc_b.value()
pixels.set_pixel(r_index, (r, 0, 0))
pixels.set_pixel(g_index, (0, g, 0))
pixels.set_pixel(b_index, (0, 0, b))
pixels.set_pixel(light_index, (r, g, b))
pixels.show()
old_button_r = new_button_r
old_button_g = new_button_g
old_button_b = new_button_b
time.sleep(0.1)