多语言展示
当前在线:1805今日阅读:57今日分享:41

Arduino PWM控制LED亮度

之前的经验中我们做了点亮LED实验,当我们的delay()函数中的数字很小达到一定值时,LED就不再闪烁了吗,这是为什么呢?下面我们就要介绍这一技术--PWM
工具/原料
1

Arduino UNO 实验套装(面包板、跳线、USB数据线、Arduino UNO 控制器)

2

5mm LED 发光二极管 * 1个

3

470欧电阻 * 1个

方法/步骤
1

Arduino UNO 控制器的数字引脚中,有六个可以输出PWM信号,如图所示,板子上带有“~”符号的既是可以输出PWM信号的引脚。

2

准备实验需要使用到的硬件,如图所示

3

如图所示连接实验使用的硬件

4

将下列程序复制到 Arduino IDE 中,如下图所示:#define LED  10               //定义LED灯引脚int i = 0;                   //存储最新数值变数,我们将使用它来从上到下计数void setup(){  pinMode(LED,OUTPUT);       //设定LED引脚为输出}void loop(){  for(i = 0;i < 255;i++){    //变数从0到254之间变化(渐强)    analogWrite(LED, i);     //设定LED亮度    delay(10);               //延时10ms,因为analogWrite执行瞬间完成,                             //速度太快不易察觉                               }  for(i =255;i > 0; i--){    //变数从255到1之间变化(渐弱)     analogWrite(LED, i);    //设定LED亮度     delay(10);              //延时10ms  }}

5

使用USB数据线将Arduino UNO控制器连接到电脑,如图所示,UNO控制器的电源指示灯“ON”亮起。

6

选择正确的板型(Arduino UNO),端口,上传程序到控制器中,若上传成功,Arduino IDE如下图所示:

7

代码回顾: 本例程中我们将学到下列新的代码,如图所示位置:analogWrite(LED, i);  从一个引脚输出模拟值(PWM)。可用于让LED以不同的亮度点亮或驱动电机以不同的速度旋转。analogWrite()输出结束后,该引脚将产生一个稳定的特殊占空比方波,直到下次调用analogWrite()(或在同一引脚调用digitalRead()或digitalWrite())。PWM信号的频率大约是490赫兹。语法:analogWrite(pin,value)其中含有两个参数:pin:用于输入数值的引脚。 value:占空比:0(完全关闭)到255(完全打开)之间。

8

PWM信号的三个基本参数如下图所示:1、脉冲宽度变化幅度(最小值/最大值)2、脉冲周期(1秒内脉冲频率个数的倒数)3、电压高度(例如:0V-5V)

9

PWM 信号介绍:脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。简单说来就是我们前面的实验中,当我们将LED闪烁的时间变小,例如delay(10) 10ms的延时,这时你看不到LED闪烁了,它常亮,但是亮度降低了,如果继续改变时间间隔,它的亮度会更低,这项技术称为PWM。PWM接口输出的电压值是通过输出的高电平和低电平时间来进行计算的。输出电压=(高电平时间/低电平时间) * 最大电压值,其中“高电平/低电平”得到的就是 PWM 信号的占空比PWM信号原理如图所示:

10

实验效果:如图所示,连接至Arduino UNO 数字引脚10 的LED发光二极管,逐渐变亮,再逐渐变暗,如此循环,产生呼吸灯的效果。

注意事项
1

Arduino UNO 控制器中可以输出PWM信号的是带有波浪线的引脚,如果不连接至这些引脚上,程序将不会出现呼吸灯效果。

2

连接硬件电路时要注意LED发光二极管的方向

推荐信息