简介
欢迎来到你的第一个PWM(脉冲宽度调制)项目!在本教程中,我们将搭建一个简单的电路,让LED从熄灭到明亮再回到熄灭,实现平滑的呼吸效果。这是一个经典的Arduino新手项目,教你如何使用analogWrite()来控制亮度、电机速度,或任何对平均电压变化有响应的设备。
我们将使用Velxio,一个支持SPICE精度模拟的在线电路仿真器。无需硬件——只需你的浏览器!你可以跟着操作,编辑代码,并立即看到结果。

电路讲解
让我们看看这个项目所需的元件和接线。
元件清单
| 元件 | 数量 | 备注 |
|---|---|---|
| Arduino Uno | 1 | 整个系统的大脑 |
| LED(任意颜色) | 1 | 我们将使用蓝色LED |
| 电阻(220 Ω) | 1 | 限流电阻(原理图中未显示,但建议使用) |
| 杜邦线 | 2 | 用于连接 |
接线步骤
- LED阳极(长脚) → 连接到Arduino的9号引脚(支持PWM的引脚)。
- LED阴极(短脚) → 连接到Arduino的GND。
重要提示: 务必在LED电路中串联一个限流电阻(通常为220 Ω到1 kΩ),以防止烧坏LED。在Velxio仿真器中,LED模型已包含内部电阻,但在实际硬件中你必须添加一个。
以下是详细的接线说明:
- 导线1(蓝色): 从Arduino 9号引脚连接到LED阳极(A)。
- 导线2(黑色): 从LED阴极(C)连接到Arduino GND。
就这样!只需要两个连接。Arduino的9号引脚可以输出PWM信号,我们将用它来改变LED的亮度。

代码讲解
在Velxio中打开代码编辑器。你会看到以下Arduino代码:
// Fade LED with PWM
// Smoothly fade LED brightness
const int LED_PIN = 9; // PWM pin
int brightness = 0;
int fadeAmount = 5;
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
analogWrite(LED_PIN, brightness);
brightness += fadeAmount;
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
delay(30);
}
工作原理
LED_PIN = 9:我们使用9号引脚,因为它支持PWM(在Arduino Uno上用~标记)。brightness:这个变量保存当前的PWM值(0到255)。0 = 熄灭,255 = 最亮。fadeAmount:每次循环中亮度的变化量。正数表示变亮,负数表示变暗。setup():将LED引脚设置为输出模式。loop():analogWrite(LED_PIN, brightness)输出PWM信号。brightness += fadeAmount增加或减少亮度。if语句检查亮度是否达到0或255。如果是,则通过取反fadeAmount来改变方向。delay(30)减慢呼吸速度,以便你能看到变化。
关键概念
- PWM(脉冲宽度调制):一种技术,数字引脚快速开关。平均电压(以及LED亮度)取决于占空比(导通时间与关断时间的比例)。
analogWrite()用于设置占空比。 analogWrite():接受0(始终关闭)到255(始终开启)之间的值。pinMode():将引脚配置为输出(或输入)。delay():暂停程序执行指定的毫秒数。如果没有它,呼吸效果会快得看不见。
常见问题与调试技巧
-
LED不亮?
- 检查LED是否正确连接(阳极接9号引脚,阴极接GND)。
- 确保代码已上传(点击工具栏中的运行按钮)。
- 确认
LED_PIN与实际使用的引脚一致。
-
LED一直保持最亮?
- 确保你使用的是支持PWM的引脚(Uno上的3、5、6、9、10、11)。13号引脚不支持PWM。
- 检查是否调用了
analogWrite(),而不是digitalWrite()。
-
呼吸速度太快或太慢?
- 调整
delay(30)的值。数值越大,呼吸越慢。 - 修改
fadeAmount来控制步长(例如,1表示非常平滑,10表示更快)。
- 调整
-
仿真器无响应?
- 使用画布工具栏中的重置按钮。
- 如有必要,刷新页面。

建议的扩展练习
掌握基本的呼吸效果后,尝试以下挑战:
- 多个LED:在10号和11号引脚上再添加两个LED。让它们依次呼吸或以不同速度呼吸。
- 按钮控制:添加一个按钮来启动/停止呼吸效果。
- 电位器速度控制:使用电位器调节呼吸速度(将
delay(30)替换为从模拟输入读取的变量)。 - RGB LED:使用RGB LED,通过控制三个PWM引脚实现不同颜色的呼吸效果。
- 串口监视器:将亮度值打印到串口监视器,用于调试。
亲自试试吧!
准备好看看效果了吗?在Velxio中打开实时示例:
👉 启动呼吸灯示例
你可以编辑代码、改变呼吸速度,甚至添加新元件。仿真器完全在你的浏览器中运行——无需下载,无需设置。
祝你呼吸愉快!