2018-2-26 22:23:04 [显示全部楼层]
9201浏览
查看: 9201|回复: 2

[入门教程] 玩转micro:bit-用BXY玩PWM输出

[复制链接]
玩转micro:bit-用BXY玩PWM输出图1
都说平昌冬奥又冷又黑。
可是北京8分钟却是精彩绝仑,中国用AI展示了大国形象。
玩转micro:bit-用BXY玩PWM输出图2


今天继续学习,PWM输出。
参考:http://docs.dfrobot.com.cn/bxy/inoutput.html

我们可以通过很快地切换电压的高低来控制LED的亮度或电动机的速度。这种技术称为脉宽调制(PWM)。
笔记:
read_digital()
如果引脚为高电平则返回1,如果引脚为低电平则返回0。
write_digital(value)
如果value为1,将引脚设置为高电平;如果为0,就将其设置为低电平。

read_analog()

读取引脚的电压,并将其作为0(0V)和1023(意为3.3V)之间的整数返回。

write_analog(value)
将value作为PWM值输出。value可以是0(0%占空比)与1023(100%占空比)之间的数。
脉冲宽度调制PWM
板子上的引脚输出模拟信号的方式与音频扬声器不同,它不能够调整引脚上的电压,这些引脚只支持3.3V输出,或者被拉低为0V。但是我们仍然可以通过很快地切换电压的高低来控制LED的亮度或电动机的速度。这种技术称为脉宽调制(PWM),这就是下面的write_analog()方法。

以上您可以看到三种不同PWM信号的图表。这些都具有相同的周期,但它们具有不同的占空比(高电平占整个周期的比例)。
第一个由write_analog(511)生成,因为它的占空比为50%,高低电平各占一半,其结果和1.65V差不多。
第二个由write_analog(255)生成,占空比为25%。它的效果如同引脚上输出0.825V。
第三个由write_analog(767)生成,信号占空比为75%。它的电压是第二个信号的三倍,相当于在引脚上输出2.475V。
这适用于诸如电机本身具有很大惯性的设备或LED,但是在生成声波时效果不会很好。
这个板子本身只能产生方波的声音,这听起来就像是以前的电脑游戏(主要是因为这些游戏的声音就是方波产生的)。


目标:
用按钮实现LED灯亮度的分档调节。
例如,第一下亮,第二下更亮,第三下最亮,第四下灭。
  1. from microbit import *
  2. #write your program:
  3. item_Num=0
  4. while True:
  5.   if pin1.read_digital()==1:
  6.     sleep(200)
  7.     item_Num=item_Num+1
  8.     if item_Num==1:
  9.       pin0.write_analog(60)
  10.     elif item_Num==2:
  11.       pin0.write_analog(500)
  12.     elif item_Num==3:
  13.       pin0.write_analog(1023)
  14.     elif item_Num==4:
  15.       pin0.write_analog(0)
  16.       item_Num=0
复制代码

有上面笔记的内容,程序不难理解。

韦应  高级技师

发表于 2019-7-25 11:21:01

蛮好的教程,学习了
回复

使用道具 举报

gada888  版主

发表于 2019-8-3 20:56:05

用这个学PWM不错的
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail