4517|6

1297

帖子

2

TA的资源

纯净的硅(中级)

楼主
 

【一起玩MicroPython】02 Micropython 的基本语法与基本外设控制 [复制链接]

 
本篇并不是python的语法书,也不可能在这么短的时间内掌握python的语法。本篇只是配合pyb基本外设的控制,来展开相关的语法。主要的可能还是对面向对象的熟悉。主要的参考是这里:
http://docs.micropython.org/en/latest/pyboard/library/pyb.html
在python的世界里面,所有的东西都是对象,至少我们可以把每个外设看成是一个对象。当然我们也知道,有许多外设是相似的,比如所有的GPIO都是相似的,除了ID不同,它们的行为和属性都是一样的。因此可以用一个Pin的类来描述GPIO,当我们需要控制某个GPIO的时候,就可以生成一个具体的引脚的对象,然后通过这个对象的方法来控制它。比如有一个引脚是P1_0,通常对它置高电平,会有两种可能,用sfr就是类似P1_0=1这样的语法;如果用HAL或者库,那么类似于pinset(P10,1)。大体上都是控制某个引脚的过程。而在python的世界里,就会变成类似p10.high()这样的东西。表面看起来没啥区别,内部的区别,思考了半天,就是写不出来。高手来补充啊。面向对象的编程,除了基本数据类型外,都是以方法来存取的。
OK,下面就以基本外设模块的控制来展开。包括按键、gpio(LED)、定时器和串口。首先我们看到pyb,这是一个module(我也说不清楚这货是啥),里面有一些方法和一些类,通过这些方法和类,就可以控制板上的外设。有两个文件可以参考,micropython-master\docs\pyboard\general.rst和quickref.rst。要控制外设,首先要导入对应的类。
  1. from pyb import LED
复制代码

然后构造某个类的一个对象(我们以LED为例,四个分别是红、绿、橙、蓝),
  1. ledr=LED(1)
复制代码

四个都可以on,off,toggle,而3和4还可以用intensity调节亮度(from 0-255)。要注意这时会自动将Timer(2/3)配置为PWM模式。可惜板上LED(1)坏了,红色不能点亮啊。这货调了我半天,LED_loop_test函数才看出来,并用万用表检查确认了。
  1. ledr.on()
  2. ledr.off()
复制代码

按键:这应该就是一个特殊的GPIO而已,而且是固定的(对应X17)。共两个方法,一个是读按键状态,一个是设定callback。后者类似于中断函数。不过如d所说,没有消抖,会有误按。

外中断也是一个类,可以设定构造一个外中断对象,并指定一个回调函数。以下语句设定X17脚的外中断,下降沿有效,中断时打印对应的中断line
  1. def callback(line):
  2.     print("line =", line)
  3. from pyb import Pin,ExtInt
  4. extint = pyb.ExtInt(Pin('X17'), ExtInt.IRQ_FALLING, Pin.PULL_UP, callback)
复制代码
如果回调函数为None,则取消对应引脚的外中断(这个是测试的结果,并没有看到官方说法)。

最后来看看Timer,这时定时采集控制的一个关键。也很简单,可以构造一个Timer对象,指定用哪个定时器,频率多少,超级直观。比如设定定时器4,频率1Hz,就是下面的语句。
  1. tim=pyb.Timer(4,freq=1)
复制代码
然后就可以设定timer溢出时做什么事情,也就是回调函数f。真的感觉比C清爽多了
  1. tim.callback(f)
复制代码


最新回复

[attach]238577[/attach] LED+的确与电阻相连的。   详情 回复 发表于 2016-5-2 21:52
点赞 关注
 
 

回复
举报

1万

帖子

25

TA的资源

版主

沙发
 
LED可能是焊接的问题,你修修看,应该能亮。

点评

用万用表二极管档,直接接LED两端。234都能亮,1不能。而且焊接水平有点菜,这么小的不会换呀  详情 回复 发表于 2016-5-2 17:30
 
 
 

回复

1297

帖子

2

TA的资源

纯净的硅(中级)

板凳
 
dcexpert 发表于 2016-5-2 15:07
LED可能是焊接的问题,你修修看,应该能亮。

用万用表二极管档,直接接LED两端。234都能亮,1不能。而且焊接水平有点菜,这么小的不会换呀

点评

二极管一般没有坏,应该是上次手工修LED时有虚焊,尝试重新补焊一下可能就好了。用一个尖一点的烙铁头,焊接的时间不要长,将二极管的两边重新加一点焊锡。  详情 回复 发表于 2016-5-2 18:07
 
 
 

回复

1万

帖子

25

TA的资源

版主

4
 
johnrey 发表于 2016-5-2 17:30
用万用表二极管档,直接接LED两端。234都能亮,1不能。而且焊接水平有点菜,这么小的不会换呀

二极管一般没有坏,应该是上次手工修LED时有虚焊,尝试重新补焊一下可能就好了。用一个尖一点的烙铁头,焊接的时间不要长,将二极管的两边重新加一点焊锡。

点评

嘻嘻,我收回上面的说法啦。明天去补焊试试。不过很奇怪,用导通性测试,LED的+和那个限流电阻是连通的!!  详情 回复 发表于 2016-5-2 21:31
我的意思是万用表已经直接接在LED两端啦,这样的话和是否虚焊没有啥关系了吧?除非LED本身两个触点有问题?各个角度反复试了很多次  详情 回复 发表于 2016-5-2 21:17
 
 
 

回复

1297

帖子

2

TA的资源

纯净的硅(中级)

5
 
dcexpert 发表于 2016-5-2 18:07
二极管一般没有坏,应该是上次手工修LED时有虚焊,尝试重新补焊一下可能就好了。用一个尖一点的烙铁头, ...

我的意思是万用表已经直接接在LED两端啦,这样的话和是否虚焊没有啥关系了吧?除非LED本身两个触点有问题?各个角度反复试了很多次
 
 
 

回复

1297

帖子

2

TA的资源

纯净的硅(中级)

6
 
dcexpert 发表于 2016-5-2 18:07
二极管一般没有坏,应该是上次手工修LED时有虚焊,尝试重新补焊一下可能就好了。用一个尖一点的烙铁头, ...

嘻嘻,我收回上面的说法啦。明天去补焊试试。不过很奇怪,用导通性测试,LED的+和那个限流电阻是连通的!!

点评

[attachimg]238577[/attachimg] LED+的确与电阻相连的。  详情 回复 发表于 2016-5-2 21:52
 
 
 

回复

1万

帖子

25

TA的资源

版主

7
 
johnrey 发表于 2016-5-2 21:31
嘻嘻,我收回上面的说法啦。明天去补焊试试。不过很奇怪,用导通性测试,LED的+和那个限流电阻是连通的! ...



LED+的确与电阻相连的。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表