一、硬件
树莓派、旋转编码器、普通阳极 RGB LED、一个瞬时按钮
二、模块
用的树莓派官方模块 gpiozero 不用安装
三、接线
(图略)
四、代码
from threading import Event
from colorzero import Color
from gpiozero import RotaryEncoder, RGBLED, Button
rotor = RotaryEncoder(16, 20, wrap=True, max_steps=180)
rotor.steps = -180
led = RGBLED(22, 23, 24, active_high=False)
btn = Button(21, pull_up=False)
led.color = Color('#f00')
done = Event()
def change_hue():
# Scale the rotor steps (-180..180) to 0..1
hue = (rotor.steps + 180) / 360
led.color = Color(h=hue, s=1, v=1)
def show_color():
print(f'Hue {led.color.hue.deg:.1f}° = {led.color.html}')
def stop_script():
print('Exiting')
done.set()
print('Select a color by turning the knob')
rotor.when_rotated = change_hue
print('Push the button to see the HTML code for the color')
btn.when_released = show_color
print('Hold the button to exit')
btn.when_held = stop_script
done.wait()