PWM 驱动 LED 怎么实现呼吸灯渐变效果?

嵌入式 · 1 浏览
PWM 驱动 LED 怎么实现呼吸灯渐变效果?

回答(4)

建议加个呼吸周期可调参数,比如用按键切换快慢,这样调试时方便对比效果,也容易让客户满意。
嵌入式阿凯 · 2026-08-17
注意LED驱动电路,如果是高电平点亮,占空比越大越亮;反之要取反。别搞反了,不然渐变方向反了。
硬件小兵 · 2026-08-17
我一般用查表法,把0-100%的占空比存成数组,配合DMA循环发送,CPU几乎不参与,效果很顺滑。
老周嵌入式 · 2026-08-17
实现呼吸灯渐变的核心是周期性地改变PWM占空比,且变化要平滑。常用方法是使用定时器中断,每隔固定时间(如10ms)更新一次占空比,步进值(如+1或-1)控制渐变速度。例如STM32中: ```c void TIM_IRQHandler(void) { static uint16_t duty = 0, dir = 1; TIM_ClearITPendingBit(TIMx, TIM_IT_Update); duty += dir; if (duty >= 1000) dir = -1; // 周期1000,峰值1000 if (duty == 0) dir = 1; TIM_SetCompare1(TIMx, duty); } ``` 注意:占空比分辨率要足够(如16位定时器),避免可见跳变。更平滑的做法是使用正弦表或指数曲线映射占空比,模拟人眼感知的非线性。另外,若MCU资源紧张,可用硬件PWM+定时器DMA或PWM输出比较通道自动更新,减少CPU开销。调试时先用示波器观察PWM波形,确认频率(建议1kHz以上)和渐变周期(1-3秒)符合预期。
mcuku 阿沐 · 2026-08-17

🧰 配套工具

🎛️ PWM 频率/占空比