Arduino基础入门篇09—会呼吸的灯
本篇使用Arduino模拟输出功能,通过PWM脉宽调制来控制LED灯亮度,使其呈现呼吸灯效果。
1. 模拟信号
数字信号是以0、1表示的电平不连续变化的信号,而模拟信号则是用连续变化的物理量来表示信息的,信号随着时间连续变化。在我们生活中接触到的大多数都是模拟信号,例如声音、光照、温度的变化等。
在我们的Uno R3开发板上,第3、5、6、9、10、11引脚具有PWM(Pulse Width Modulation脉冲宽度调制)功能。
通过使用analogWrtie()函数,在指定的引脚上通过高低电平的不断转换输出一个周期固定的方波,通过改变高低电平在每个周期中所占的比例(占空比),进而得到不同的电压输出。
当一个周期内高电平出现时间长一些时,输出电压就会高一些,LED灯更亮一些。当高电平出现的时间短一些时,输出电压就会低一些,LED灯亮度则会暗一些。
2. 实验材料
-
Uno R3开发板
-
配套USB数据线
-
面包板及配套连接线
-
1个LED灯
-
1个220Ω限流电阻
3. 实验步骤
-
根据原理图搭建电路。
直插LED灯正极连接限流电阻,电阻另一端连接开发板第3引脚,LED灯负极接开发板GND。
实验原理图如下图所示:
实验原理图实物连接图如下图所示:
实物连接图 -
新建sketch,拷贝如下代码替换自动生成的代码并进行保存。
1/*
2 * Breath
3 * 通过模拟输出PWM控制LED灯,改变其亮度,达到呼吸效果
4 */
5
6int ledPin = 3;
7
8void setup ()
9{
10 pinMode(ledPin,OUTPUT);
11}
12
13void loop()
14{
15 for (int a=0; a<=255;a++) //循环语句,控制PWM亮度的增加
16 {
17 analogWrite(ledPin,a);
18 delay(8); //当前亮度级别维持的时间,单位毫秒
19 }
20 for (int a=255; a>=0;a--) //循环语句,控制PWM亮度减小
21 {
22 analogWrite(ledPin,a);
23 delay(8); //当前亮度的维持的时间,单位毫秒
24 }
25
26} -
连接开发板,设置好对应端口号和开发板类型,进行程序下载。
程序下载
4. 实验现象
LED灯由亮变暗,又由暗变量。
实验现象
5. 函数介绍
analogWrite()
-
描述:在指定引脚输出指定占空比的PWM方波。
-
函数原型:analogWrite(pin)
-
参数:
-
-
pin:输出引脚。
-
value:占空比。介于0和255之间。
-
-
返回值:没有。
6. 实验分析
程序中使用analogWrite()函数,通过两个for循环,逐渐改变LED灯的亮度。两个for循环中都有延时语句,是为了让我们肉眼能观察到亮度调节的效果。
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com