111896| 58
|
[入门教程] Arduino教程 05 呼吸灯「DFR0100」 |
在前面几章中,我们知道了如何通过程序来控制LED亮灭。但Arduino还有个很强大的功能通过程序来控制LED的明亮度。Arduino UNO数字引脚中有六个引脚标有“~”,这个符号就说明该口具有PWM功能。我们动手做一下,在做的过程中体会PWM的神奇力量!下面就介绍一个呼吸灯,所谓呼吸灯,就是让灯有一个由亮到暗,再到亮的逐渐变化的过程,感觉像是在均匀的呼吸。 所需元件硬件连接这个项目的硬件连接与项目二是完全相同的。如有不明白,可以回看项目一。 输入代码样例代码4-1:
代码下载完成后,我们可以看到LED会有个逐渐由亮到灭的一个缓慢过程,而不是直接的亮灭,如同呼吸一般,均匀变化。 代码回顾大部分代码我们已经很熟悉了,比如初始化变量声明、引脚设置、for循环、以及函数调用。 在主函数中,只有两个调用函数,先看其中一个就能明白了。
fadeOn()函数有两个传递参数,从参数名称中就可以简单看出,int time指的是时间,int increament指的是增量。函数中包含了一个for循环,循环条件是 for语句中涉及了一个新函数
如何发送一个模拟值到一个数字引脚呢?就要用到该函数,使用这个函数是要具备特定条件的——该数字引脚需具有PWM功能。观察一下Arduino板,查看数字引脚,你会发现其中6个引脚(3、5、6、9、10、11)旁标有“~”,这些引脚不同于其他引脚,因为它们可以输出PWM信号。 函数格式如下: analogWrite()函数用于给PWM口写入一个0~255的模拟值。特别注意的是,analogWrite()函数只能写入具有PWM功能的数字引脚。 PWM是一项通过数字方法来获得模拟量的技术。数字控制来形成一个方波,方波信号只有开关两种状态(也就是我们数字引脚的高低)。通过控制开与关所持续时间的比值就能模拟到一个0到5V之间变化的电压。开(学术上称为高电平)所占用的时间就叫做脉冲宽度,所以PWM也叫做脉冲宽度调制。 通过下面五个方波来更形象的了解一下PWM。
上图绿色竖线代表方波的一个周期。每个analogWrite(value)中写入的value都能对应一个百分比,这个百分比也称为占空比(Duty Cycle),指的是一个周期内高电平持续时间比上低电平持续时间得到的百分比。图中,从上往下,第一个方波,占空比为0%,对应的value为0。LED亮度最低,也就是灭的状态。高电平持续时间越长,也就越亮。所以,最后一个占空比为100%的对应value是255,LED最亮。50%就是最亮的一半了,25%则相对更暗。 PWM比较多的用于调节LED灯的亮度。或者是电机的转动速度,电机带动的车轮速度也就能很容易控制了,在玩一些Arduino小车时,更能体现PWM的好处。 这一章介绍结束了!同样的硬件连接,通过软件的变化,可以呈现出完全不一样的效果,是不是觉得Arduino很神奇! 课后作业
具体用法可以查看下面链接的编程参考手册,会详细介绍这个函数的用法。之后的讲解中,我们可能有对些函数不 进行详细说明,你可以通过这种方法来学习某个新函数。 点击查看: DFRobot 中文版 Arduino编程参考手册(位置:入门教程 - Arduino编程参考手册) https://wiki.dfrobot.com.cn/Arduino%E7%BC%96%E7%A8%8B%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C
|
老师,请问 void loop(){ fadeOn(1000,5); 这句fadeOn后括号里的内容 和下句 void fadeOn(unsigned int time,int increament){ 中fadeOn后括号里的内容 为什么不一样?为什么要这么写呢? |
for (byte value = 0 ; value < 255; value+=increament) 老师想问一下 这句里这个byte 有什么用啊 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed