YFROBOT创客社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13827|回复: 7
打印 上一主题 下一主题

Arduino入门教程—基础实验篇四 PWM方式控制LED亮度

[复制链接]

签到天数: 866 天

[LV.10]以坛为家III

跳转到指定楼层
楼主
发表于 2013-5-15 17:57:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 AllBlue 于 2013-8-15 19:35 编辑

PWM方式控制LED亮度

上面点亮LED灯实验中我们提到,当我们的delay()函数中的数字很小达到一定值时,LED就不再闪烁了吗,这是为什么呢?下面我们就要介绍这一技术--PWM。

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

简单说来就是我们上面发现的实验现象:当我们将LED闪烁的时间变小,例如delay(10ms),这是你看不到LED闪烁了,它常亮,但是亮度降低了,如果继续改变时间间隔,它的亮度会更低;这项技术别称为PWM。

下面我们看下它的工作原理,如下图:

其实,它就是通过让LED闪烁的足够快,让我们的肉眼察觉不到,再通过改变亮灭时间的占空比例来调节LED的亮度。当然在其他领域也是可以运用到它的,例如改变声音大小等。

了解了PWM 的工作原理,我们就可以做实验来验证下它吧!

实验元件(和闪烁LED一样):

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

LED灯 一枚

电阻220Ω 一枚


UNO控制板为我们提供了6 个PWM 控制接口,分别为:D3、D5、D6、D9、D10、D11,也就是说我们想要使用PWM 控制时,这6个接口都是可以使用的,如果你记得不清楚,控制板上每个PWM引脚都有“~”符号!下面看下我们的电路图:

我们电路连接的是D11数字引脚。

我想通过上面的介绍,大家对PWM 的控制也是了解了,程序说不定都能写出来了,下面是例程:

  1. /*
  2.   PWM控制LED
  3.   调高LED亮度直到最亮,调低LED亮度直到熄灭。
  4. */

  5. #define LED  11               //定义LED灯引脚
  6. int i = 0;                   //存储最新数值变数,我们将使用它来从上到下计数

  7. void setup(){
  8.   pinMode(LED,OUTPUT);       //设定LED引脚为输出
  9. }

  10. void loop(){
  11.   for(i = 0;i < 255;i++){    //变数从0到254之间变化(渐强)
  12.     analogWrite(LED, i);     //设定LED亮度
  13.     delay(10);               //延时10ms,因为analogWrite执行瞬间完成,
  14.                              //速度太快不易察觉
  15.                              
  16.   }
  17.   for(i =255;i > 0; i--){    //变数从255到1之间变化(渐弱)
  18.      analogWrite(LED, i);    //设定LED亮度
  19.      delay(10);              //延时10ms
  20.   }
  21. }
复制代码

我们将上面的例程上传到UNO R3控制板中,可以看到,LED像呼吸一样由灭到亮,由亮到灭~~ 实验成功!!

你也可以使用该方法控制别的元器件例如蜂鸣器(下面会给大家介绍到)。。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持1 反对反对

该用户从未签到

沙发
发表于 2013-11-2 14:32:37 | 只看该作者
学习了,哇哈哈哈
回复 支持 反对

使用道具 举报

该用户从未签到

板凳
发表于 2013-11-19 14:25:12 | 只看该作者
还是用51之类的单片机更能了解PWM的工作情况,这里封装到函数后就看不清楚了。
回复 支持 反对

使用道具 举报

签到天数: 7 天

[LV.3]偶尔看看II

地板
发表于 2013-11-20 10:35:56 | 只看该作者
yaake 发表于 2013-11-19 14:25
还是用51之类的单片机更能了解PWM的工作情况,这里封装到函数后就看不清楚了。

恩,可以在官方开源的代码里查找相关语句!
回复 支持 反对

使用道具 举报

签到天数: 22 天

[LV.4]偶尔看看III

5#
发表于 2019-5-1 19:49:11 | 只看该作者
PWM方式控制LED亮度
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|联系我们|YFROBOT ( 苏ICP备20009901号-2  

GMT+8, 2024-4-25 22:45 , Processed in 0.049347 second(s), 26 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表