分享

【Arduino教程】教你如何制作呼吸灯!

 旭日东升4k165w 2019-10-17

在前面几章中,我们知道了如何控制LED亮灭。但Arduino还有个很强大的功能通过程序来控制LED的明亮度。

ArduinoUNO数字引脚中有六个引脚标有“~”,这个符号就说明该口具有PWM功能。我们动手做一下,在做的过程中体会PWM的神奇力量!下面就介绍一个呼吸灯,所谓呼吸灯,就是让灯有一个由亮到暗,再到亮的逐渐变化的过程,感觉像是在均匀的呼吸。

所需元件

硬件连接

数字食人鱼红色LED发光模块

连接数字引脚10

硬件分析(模拟输出)

和项目一(点亮一盏灯)类似的装置,同样没有输入设备,只有一个输出设备,但又有所不同。项目一LED是作为数字输出,而这里我们是作为模拟 输出。代码部分会说明。

控制设备

输出设备

输入代码

代码下载完成后,我们可以看到LED会有个逐渐由亮到灭的一个缓慢过程,而不是直接的亮灭,如同呼吸一般,均匀变化。

代码回顾

当我们需要重复执行某句话时,我们可以使用for语句。

for语句格式如下:

for循环顺序如下:

第一轮:1 2 3 4

第二轮:2 3 4

?

直到2不成立,for循环结束。

知道了这么个顺序之后,回到代码中:

for (int value = 0; value 255; value=value+1){

...

}

for (int value = 255; value 0; value=value-1){

...

}

这两个for语句实现了value的值不断由0增加到255,随之在从255减到0,在增加到255……,无限循环下去。

再看下for里面,涉及一个新函数analogWrite()。

我们知道数字口只有0和1两个状态,那如何发送一个模拟值到一个数字引脚呢?就要用到该函数。观察一下Arduino板,查看数字引脚,你会发现其中6个引脚旁 标有“~”,这些引脚不同于其他引脚,它们可以输出 PWM信号。

函数格式如下:

analogWrite(pin,value)

analogWrite()函数用于给PWM口写入一个0~255的模拟值。所以,value是在0~255之间的值。特别注意的是,analogWrite()函数只能写入具有PWM功能的数字 引脚,也就是3,5,6,9,10,11引脚。

PWM是一项通过数字方法来获得模拟量的技术。数字控制来形成一个方波,方波信号只有开关两种状态(也就是我们数字引脚的高低)。通过控制开与关所持续时 间的比值就能模拟到一个0到5V之间变化的电压。开(学术上称为高电平)所占用的时间就叫做脉冲宽度, 所以PWM也叫做脉冲宽度调制。

通过下面五个方波来更形象的了解一下PWM。

Pulse Width Modulation

0% Duty Cycle-analogWrite(0)

上图橘色竖线代表方波的一个周期。每个analog Write(value)中写入的value都能对应一个百分比,这个百分比 也称为占空比(Duty Cycle),指的是一个周期内高电平持 续时间比上低电平持续时间得到的百分比。图中,从上往下,第一个方波,占空比为0%,对应的value为0。LED 亮度最低,也就是灭的状态。高电平持续时间越长,也就越亮。所以,最后一个占空比为100%的对应value是255 , LED最亮。50%就是最亮的一半了,25%则相对更暗。

PWM比较多的用于调节LED灯的亮度。或者是电机的转动速度,电机带动的车轮速度也就能很容易控制了,在玩 一些Ar-duino小车时,更能体现PWM的好处。

这一节介绍结束了!同样的硬件连接,通过软件的变化, 可以呈现出完全不一样的效果,是不是觉得Arduino很酷炫!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多