ESP32 LED PWM
乐鑫官方文档 LED 控制器 (LEDC) 主要用于控制 LED,也可产生 PWM 信号用于其他设备的控制。该控制器有 8 路通道,可以产生独立的波形,驱动 RGB LED 等设备。
LEDC 通道共有两组,分别为 8 路高速通道和 8 路低速通道。高速通道模式在硬件中实现,可以自动且无干扰地改变 PWM 占空比。低速通道模式下,PWM 占空比需要由软件中的驱动器改变。每组通道都可以使用不同的时钟源。
LED PWM 控制器可在无需 CPU 干预的情况下自动改变占空比,实现亮度和颜色渐变。
功能概览
设置 LEDC 通道在 高速模式或低速模式 下运行,需要进行如下配置:
定时器配置 指定 PWM 信号的频率和占空比分辨率。
通道配置 绑定定时器和输出 PWM 信号的 GPIO。
改变 PWM 信号 输出 PWM 信号来驱动 LED。可通过软件控制或使用硬件渐变功能来改变 LED 的亮度。
使用
Arduino 框架
绑定引脚到PWM通道
void ledcAttachPin(uint8_t pin, uint8_t chan)
- pin:引脚号
- chan:PWM通道
初始化PWM通道
uint32_t ledcSetup(uint8_t chan, uint32_t freq, uint8_t bit_num)
- chan:通道号
- freq:PWM频率
- bit_num:PWM分辨率 例如8就是8位分辨率:0-255
频率和分辨率限制参考
写入PWM信号
void ledcWrite(uint8_t chan, uint32_t duty)
- chan:通道号
- duty:PWM占空比,范围由初始化时设置例如8位范围是0-255,10位范围0-1023