实验:基于Arduino Uno 开发板在 PC 端展示 PWM 信号脉冲
一、硬件清单
1.Arduino Uno 开发板一块+配套串口线一根
2.150欧姆色环电阻一个
3.面包板一块
4.杜邦线若干根
5.LED 灯一颗
6.PCB 集成板一块
二、脉冲信号的定义
脉冲信号是一种离散信号,最常用的 是 方波信号,例如给一个引脚周期性输出高电平1秒,在输出低电平1秒。得到的脉冲方波信号如下图所示:
2.1 PWM 调亮度/调速的原理
PWM 是没重宽度调制的简称,其实这里所谓的调制,就是调节一个周期内方波信号中高电平所占的比例,这个比例称为占空比。如下图所示:
PWM 调速的原理简单理解为:一个周期内,高电平所占比例越高,LED 灯的亮度就越亮,点击的转速也就越快。
三、使用 PWM 信号制作 LED 呼吸灯
3.1 如何产生 PWM 信号?
使用 Arduino 中的 analogWrite() 函数可以很方便地输出不同空占比的 PWM 信号,参数范围为0-255,值越大,空占比越大,LED 灯越亮。
3.2 呼吸灯实现原理
使用 analogWrite() 函数输出空占比逐渐变大的 PWM 信号,到达最大值后,在输出空占比逐渐变小的 PWM 信号,循环往复,即可实现 LED 呼吸灯的效果。
3.3 电脑连接原理图分析
3.3.1 查看 LED 灯的参数,主要是电流和电压
思考:使用下面这个电路图可以实现吗?
为了降压限流,还需要在电路中串联一个电阻:
3.3.2 计算机串联电阻阻值:
3.3.3 方式一:确定接线线路(面包板):
方式二:PCB 集成板:
四、代码结构:
定义管脚号
初始化管脚以及模式
信号循环
完整代码:
// PWM 脉冲信号:是一种离散信号,占空比是50%。在一个周期内所占用的空比值越大,则 LED 灯的亮度越亮
#define LED 9 // 定义管脚号
void setup() {
// 设置管脚为输出模式
pinMode(LED, OUTPUT);
}
void loop() {
/*
analogWrite 函数可以产生脉冲信号,参数范围为0-255
for 循环进行调整 PWM 值的大小
*/
// 不断增大亮度值
for (int i=0;i<=255;i++) {
analogWrite(LED, i);
delay(5);
}
// 不断减小亮度值
for (int i=265;i>=0;i--) {
analogWrite(LED, i);
delay(5);
}
}