arduino利用pwn调节LED灯点亮亮度
时间: 2025-05-23 08:23:47 浏览: 13
### 使用Arduino通过PWM调节LED灯亮度
#### 1. PWM基本概念
脉宽调制(Pulse Width Modulation,简称PWM)是一种常见的电子控制技术,用于模拟信号的生成。其核心思想是通过对数字信号占空比的调整,在一定频率下实现对设备功率的有效控制[^2]。
#### 2. 硬件准备
为了实现通过PWM调节LED灯的亮度,需要以下硬件组件:
- Arduino开发板(如Uno、Nano等)
- LED灯
- 电阻(通常为220欧姆,防止电流过大损坏LED)
- 连接线若干
- 面包板(可选)
将LED的正极连接到Arduino的一个PWM引脚(标记有`~`符号),负极通过限流电阻接地。例如,可以使用第11号引脚作为PWM输出端口[^3]。
#### 3. 软件编程
以下是完整的代码示例,展示如何通过串口输入字符来动态改变LED灯的亮度:
```cpp
#define Led 11 // 定义Led引脚,支持PWM输出
int LedLight = 0; // 初始化LED灯光亮度变量
char now; // 存储当前接收的串口数据
void setup() {
pinMode(Led, OUTPUT); // 设置LED引脚为输出模式
Serial.begin(9600); // 启动串口通信,设置波特率为9600bps
}
void loop() {
if (Serial.available() > 0) { // 判断是否有可用的数据等待读取
now = Serial.read(); // 获取串口中的一字节数据
LedLight = now - 'a'; // 将'a'-'j'映射成数值范围0-9
Serial.print("原始亮度值: ");
Serial.println(LedLight);
// 映射亮度值从0-9扩展到0-255
LedLight = map(LedLight, 0, 9, 0, 255);
Serial.print("实际亮度值: ");
Serial.println(LedLight);
analogWrite(Led, LedLight); // 输出对应的PWM波形,控制LED亮度
}
}
```
这段程序的功能如下:
- `pinMode()`函数配置指定引脚的工作模式。
- `analogWrite()`函数接受两个参数:目标引脚编号以及期望的PWM占空比(范围为0至255)。它利用定时器产生不同宽度的方波从而达到模拟电压的效果[^4]。
#### 4. 实验现象说明
当向串口发送字母'a'时,代表最低亮度;而发送'h'则表示较高的亮度水平。每次更新都会打印出计算得到的具体数值以便观察效果变化情况[^1]。
---
####
阅读全文
相关推荐

















