3. 呼吸灯效果
任务说明
本案例使用Arduino开发板控制单个LED,通过PWM(脉冲宽度调制)技术实现亮度的平滑变化,模拟呼吸效果。核心目标是掌握analogWrite()函数的使用方法,理解PWM占空比与LED亮度的对应关系。
硬件连接
准备1个LED、1个220Ω限流电阻和若干杜邦线。将LED阳极(长引脚)通过220Ω电阻连接到Arduino开发板的9号引脚,LED阴极(短引脚)连接到GND。9号引脚为硬件PWM输出引脚,支持analogWrite()输出0~255的占空比控制值。
代码实现
打开Arduino IDE,新建草图并输入以下代码。程序通过for循环逐步增加和减少PWM输出值,实现LED亮度的平滑变化。
const int ledPin = 9; // LED连接到9号PWM引脚
void setup() {
pinMode(ledPin, OUTPUT); // 设置引脚为输出模式
}
void loop() {
// 亮度逐渐增加(0 → 255)
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(ledPin, brightness); // 设置PWM占空比
delay(10); // 每档保持10ms,总上升时间约2.55s
}
// 亮度逐渐降低(255 → 0)
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(ledPin, brightness);
delay(10); // 总下降时间约2.55s
}
}
PWM原理说明
analogWrite(pin, value)并非输出模拟电压,而是以约490Hz的频率输出方波,通过改变高电平在一个周期内的占比(即占空比)来控制LED的平均功率。参数value范围为0~255:0表示占空比0%(全灭),255表示占空比100%(全亮),中间值对应不同亮度。本案例中,9号引脚为硬件PWM引脚,无需软件模拟。
验证方法
将代码上传至开发板后,观察LED是否呈现以下变化:
- LED从完全熄灭状态开始,在约2.5秒内逐渐变亮至最亮;
- 随后在约2.5秒内逐渐变暗至完全熄灭;
- 上述过程循环往复,形成类似呼吸的节奏。
判定标准:LED亮度变化平滑、无闪烁或跳变,且循环周期约为5秒。若亮度变化过快或过慢,可调整delay()参数值(增大变慢,减小变快)。若LED不亮,检查接线是否正确、LED引脚方向是否接反。