使用 ESP32 PWM 技术实现呼吸灯效果
使用 ESP32 开发板自带的 LED 灯(通常连接在 GPIO2),通过 PWM(脉冲宽度调制)技术实现呼吸灯效果。
工具 → 开发板 → ESP32 Arduino → ESP32 Dev Module工具 → 端口 → 选择对应的 COM 端口(Windows)在 Arduino IDE 中输入以下代码:
// 定义LED引脚
const int ledPin = 2;
// 设置PWM属性
const int freq = 5000; // 频率 5000Hz
const int ledChannel = 0; // PWM通道 0 (ESP32有16个通道 0-15)
const int resolution = 8; // 分辨率 8位 (0-255)
void setup() {
Serial.begin(115200);
// 1. 配置 PWM 功能 (频率, 分辨率, 通道)
// 注意:在 ESP32 Arduino核心 v3.0+ 中,API有所变化,此处演示经典写法
ledcSetup(ledChannel, freq, resolution);
// 2. 将 PWM 通道绑定到 GPIO 引脚
ledcAttachPin(ledPin, ledChannel);
}
void loop() {
// 逐渐变亮
for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){
ledcWrite(ledChannel, dutyCycle); // 设置当前占空比
delay(10); // 延时控制呼吸速度
}
// 逐渐变暗
for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
ledcWrite(ledChannel, dutyCycle);
delay(10);
}
Serial.println("Breathing cycle completed");
}
delay(10) 的数值。问题1:LED不亮
问题2:呼吸效果不明显
delay() 值。问题3:上传失败
ledcSetup():配置 PWM 通道参数(频率、分辨率)。ledcAttachPin():绑定引脚到 PWM 通道。ledcWrite():设置通道的占空比值。delay() 实现平滑过渡。