- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
arduino學习笔记7PWM控制LED实验PWM讲解
本次实验通过PWM来控制一盏LED灯,让它慢慢变亮再慢慢变暗,如此循环。下面是接线图:?
/*
本次实验演示如何通过analogWrite()命令使连接9号端口的LED灯亮度逐渐变化
??*/
int brightness = 0;? ? //定义整数型变量brightness与其初始值,此变量用来表示LED的亮度。
int fadeAmount = 5;? ? //定义整数型变量fadeAmount,此变量用来做亮度变化的增减量。
void setup()??{?
??
??pinMode(9, OUTPUT);// 设置9号口为输出端口:
}?
void loop()??{?
??
??analogWrite(9, brightness);//把brightness的值写入9号端口
??brightness = brightness + fadeAmount;//改变brightness值,使亮度在下一次循环发生改变
??
??if (brightness == 0 || brightness == 255) {
? ? fadeAmount = -fadeAmount ; //在亮度最高与最低时进行翻转
??}? ???
??
??delay(30); //延时30毫秒? ?? ?? ?? ?? ?? ?? ???
}
复制代码
本次实验效果如下:analogWrite()其作用是给端口写入一个模拟值(PWM波)。可以用来控制LED灯的亮度变化,或者以不同的速度驱动马达。当执行analogWrite()命令后,端口会输出一个稳定的占空比的方波。除非有下一个命令来改变它。PWM信号的频率大约为490Hz.在使用ATmega168与ATmega328的arduino控制板上,其工作在3,5,6,9,10,11端口。Arduino Mega控制板,可以工作于2-13号端口。在更古老的基于ATmega8的arduino控制板上,analogWrite()命令只能工作于9,10,11号端口。在使用analogWrite()命令前,可以不使用pinMode()命令把端口定义为输出端口,当然如果定义了更好,这样利于程序语言规范。语法analogWrite(pin, value)参数pin:写入的端口value:占空比:在0-255之间。注释与已知问题当PWM输出与5,6号端口的时候,会产生比预期更高的占空比。原因是PWM输出所使用的内部时钟,millis()与delay()两函数也在使用。所以要注意使用5,6号端口时,空占比要设置的稍微低一些,或者会产生5,6号端口无法输出完全关闭的信号。PWM(Pulse-width modulation)脉宽调制PWM是使用数字手段来控制模拟输出的一种手段。使用数字控制产生占空比不同的方波(一个不停在开与关之间切换的信号)来控制模拟输出。额~~这个说的太专业了,还是说的通俗点。以本次实验来看,端口的输入电压只有两个0V与5V。如我我想要3V的输出电压怎么办。。。有同学说串联电阻,对滴,这个方法是正确滴。但是如果我想1V,3V,3.5V等等之间来回变动怎么办呢?不可能不停地切换电阻吧。这种情况下。。。就需要使用PWM了。他是怎么控制的呢,对于arduino的数字端口电压输出只有LOW与HIGH两个开关,对应的就是0V与5V的电压输出,咱本把LOW定义为0,HIGH定义为1.一秒内让arduino输出500个0或者1的信号。如果这500个全部为1,那就是完整的5V,如果全部为0,那就是0V。如果010101010101这样输出,刚好一半一半,输出端口就感觉是2.5V的电压输出了。这个和咱们放映电影是一个道理,咱们所看的电影并不是完全连续的,它其实是每秒输出25张图片,在这种情况下人的肉眼是分辨不出来的,看上去就是连续的了。PWM也是同样的道理,如果想要不同的电压,就控制0与1的输出比例控制就ok~当然。。。这和真实的连续输出还是有差别的,单位时间内输出的0,1信号越多,控制的就越精确。在下图中,绿线之间代表一个周期,其值也是PWM频率的倒数。换句话说,如果arduino PWM的频率是500Hz,那么两绿线之间的周期就是2毫秒。 analogWrite() 命令中可以操控的范围为0-255, analogWrite(255)表示100%占空比(常开), analogWrite(127)占空比大约为50%(一半的时间)。?传统方法实现PWM除了使用analogWrite()命令实现PWM,还可以通过传统方法来控制电平的开关时间来设置。请看如下代码
void setup()
{
??pinMode(13, OUTPUT);
您可能关注的文档
最近下载
- 成人鼻肠管的留置与维护(2021团体标准解读)全文.pptx
- 【国家标准】国家职业技能标准 (2019年版) 起重装卸机械操作工.pdf VIP
- 小儿轮状病毒性肠炎护理ppt.pptx
- Pilon骨折精品课件.ppt VIP
- 中纺机集团对下属企业工资总额管理办法介绍.docx VIP
- 中国银行新疆区分行招聘笔试试题2024 .pdf VIP
- 2025中国银行新疆区分行社会招聘笔试备考题库及答案解析.docx VIP
- 2024电能计量装置典型设计低压用电客户.docx VIP
- 粗轧机AWC液压控制系统故障原因分析和改进.pdf VIP
- 2025年中国银行社会招聘备考试题及答案解析.docx VIP
文档评论(0)