您当前的位置:首页 > 教程 > Arduino教程 > 【Arduino教程】第七课:用按钮和PWM控制LED亮度的呼吸灯 网站首页 Arduino教程
【Arduino教程】第七课:用按钮和PWM控制LED亮度的呼吸灯
发布时间:2017-09-18 21:57:53编辑:阅读()
-
今天的Arduino教程是教大家如何用PWM来控制LED,Arduino接了两个按键,一个用来增加LED的亮度,一个用来降低LED的亮度。其实这个有点像呼吸灯,呼吸灯就是自动用PWM逐渐增加或者降低LED的亮度,而不是通过按键来手工控制。
1、什么是PWM?
PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。
上图显示了三种不同的PWM信号。a是一个占空比为10%的PWM输出,即在信号周期中,10%的时间通,其余90%的时间断。b和c显示的分别是占空比为50%和90%的PWM输出。这三种PWM输出编码的分别是强度为满度值的10%、50%和90%的三种不同模拟信号值。例如,假设供电电源为9V,占空比为10%,则对应的是一个幅度为0.9V的模拟信号。
2、材料清单
Arduino板一块
10K电阻两个
330欧电阻一个
轻触开关两个
LED一个
面包板一块
面包板连接线若干
3、电路图
LED经过一个330欧电阻接在Arduino的6脚上
两个按键分别接在Arduino的4脚和10脚上,其他的连接线见上图
4、代码
int n=0;
void setup ()
{
pinMode(4,INPUT);
pinMode(6,OUTPUT); /*该端口需要选择有#号标识的数字口(有#号表示是支持PWM的引脚)*/
pinMode(10,INPUT);
}
void loop()
{
int up =digitalRead(4); /*读取4号口的状态*/
int down = digitalRead(10); /*读取10号口的状态*/
if (up==HIGH) /*判断4号口目前是否是高电平*/
{
n=n+5; /*每次累加值为5*/
if (n>=255) {
n=255;
} /*限定最大值为255 */
analogWrite(6,n); /*使用PWM控制6号口输出,变量n的取值范围是0-255 */
delay (300);
}
if (down==HIGH) /*减少亮度*/
{
n=n-5;
if (n<=0) {
n=0;
}
analogWrite(6,n);
delay (300);
}
}5、相关函数介绍
只介绍新增的函数,前边的教程中出现的函数不在介绍
analogWrite() 在某个引脚上设置PWM
关键字词:Arduino教程,呼吸灯,PWM控制LED