Skip to content

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