3. 呼吸灯效果

呼吸灯效果 学习卡片

任务说明

本案例使用Arduino开发板控制单个LED,通过PWM(脉冲宽度调制)技术实现亮度的平滑变化,模拟呼吸效果。核心目标是掌握analogWrite()函数的使用方法,理解PWM占空比与LED亮度的对应关系。

硬件连接

准备1个LED、1个220Ω限流电阻和若干杜邦线。将LED阳极(长引脚)通过220Ω电阻连接到Arduino开发板的9号引脚,LED阴极(短引脚)连接到GND。9号引脚为硬件PWM输出引脚,支持analogWrite()输出0~255的占空比控制值。

Arduino 开发板 ~9 (PWM) GND 220Ω LED 阳极→电阻→~9 阴极→GND PWM 波形

代码实现

打开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引脚方向是否接反。