旋转编码器控制RGB


项目介绍

在第二十课的实验中我们学习了使用旋转编码器计数。在这一实验课程中我们将旋转编码器模块和共阴RGB模块组合实验,通过旋转编码器计数的结果,控制RGB模块上LED显示不同的颜色。

实验组件

ESP32 Plus主板
ESP32 Plus主板 x1
Keyes 旋转编码器模块
Keyes 旋转编码器模块 x1
Keyes 共阴RGB模块
Keyes 共阴RGB模块 x1
XH2.54-5P 转杜邦线母单线
XH2.54-5P 转杜邦线母单线 x1
USB线
USB线 x1

模块接线图

旋转编码器控制RGB接线图

在线运行代码

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
import time
from rotary_irq_rp2 import RotaryIRQ
from machine import Pin, PWM

pwm_r = PWM(Pin(32)) 
pwm_g = PWM(Pin(4))
pwm_b = PWM(Pin(2))

pwm_r.freq(1000)
pwm_g.freq(1000)
pwm_b.freq(1000)

def light(red, green, blue):
    pwm_r.duty(red)
    pwm_g.duty(green)
    pwm_b.duty(blue)

SW=Pin(16,Pin.IN,Pin.PULL_UP)
r = RotaryIRQ(pin_num_clk=14,
              pin_num_dt=27,
              min_val=0,
              reverse=False,
              range_mode=RotaryIRQ.RANGE_UNBOUNDED)

while True:
    val = r.value()
    print(val%3)
    if val%3 == 0:
        light(1023, 0, 0)
    elif val%3 == 1:
        light(0, 1023, 0)
    elif val%3 == 2:
        light(0, 0, 1023)
    time.sleep(0.1)

实验结果

按照接线图正确接好模块,用USB线连接到计算机上电,单击 运行按钮 来执行程序代码。代码开始执行,任意方向旋转编码器,串口监视器打印出对应余数;RGB模块上的LED显示余数对应的颜色:余数0显示红色、余数1显示绿色、余数2显示蓝色。按下旋转编码器,RGB模块上LED保持当前颜色不变。

单击 停止按钮 或按Ctrl+C退出程序。

代码说明

代码说明
from rotary_irq_rp2 import RotaryIRQ导入旋转编码器库,用于处理编码器信号。
pwm_r = PWM(Pin(32))创建红色LED的PWM对象,设置引脚32。
pwm_r.freq(1000)设置PWM频率为1000Hz,控制LED亮度。
def light(red, green, blue):自定义函数,用于控制RGB LED的颜色。
r = RotaryIRQ(...)创建旋转编码器对象,设置CLK和DT引脚。
val%3计算编码器值的余数,用于确定显示的颜色。