Pyboard基础功能探索---LED-程序员宅基地

MicroPython在官方网站上提供了一个在线测试的环境,可以让我们通过浏览器去运行和体验MicroPython。这个在线演示环境可以运行各种例程,查看各种外设和功能模块,如LED、GPIO、ADC、按键、舵机驱动、延时、数学计算等,可以看到LED的变化,但是不支持I2C、SPI、UART、定时器等硬件功能,因为这个在线演示是通过QEMU进行软件仿真的,并不是真实开发板运行(早期的在线演示是在真正开发板上运行,但是访问很慢,因为只有一个开发板而可能会有很多用户访问,同时还会受到网速的限制)。

在线仿真运行网址https://microPython.org/unicorn

早期版本http://microPython.org/live/

 

板载LED(3)和LED(4)分别是橙色的灯和蓝色的灯,它们两个都可以进行亮度调节,其它两个(LED(1)、LED(2))没有调节亮度功能,区别就在于LED(3)和LED(4)使用了定时器实现PWM调节亮度。LED(3)使用的是定时器2,LED(4)使用的是定时器3,所以在使用这两个灯的亮度调节功能时不可以再使用这两个定时器了,不然程序就会和预想的格格不入。

 LED_YELLOW -- Pin(Pin.cpu.A15, mode=Pin.ALT, af=Pin.AF1_TIM2)
 LED_BLUE -- Pin(Pin.cpu.B4, mode=Pin.ALT, af=Pin.AF2_TIM3)

LED

利用REPL获取相关信息:

>>> import pyb
>>> help(pyb.LED)
object <class 'LED'> is of type type
  on -- <function>
  off -- <function>
  toggle -- <function>
  intensity -- <function>
>>> dir(pyb.LED)
['__class__', '__name__', 'intensity', 'off', 'on', 'toggle']
>>>

板载LED有四个redgreenorangeblue)引脚:

>>> help(pyb.Pin.board)
object <class 'board'> is of type type
...

  LED_RED -- Pin(Pin.cpu.A13, mode=Pin.OUT)
  LED_GREEN -- Pin(Pin.cpu.A14, mode=Pin.OUT)
  LED_YELLOW -- Pin(Pin.cpu.A15, mode=Pin.OUT)
  LED_BLUE -- Pin(Pin.cpu.B4, mode=Pin.OUT)
...

获取Pin.cpu.A13引脚全部名称:

>>> orange = pyb.Pin(Pin.cpu.A13,Pin.OUT)
>>> orange.names()
['A13', 'LED_RED']
>>> A13 = pyb.Pin('A13',Pin.OUT)
>>> A13
Pin(Pin.cpu.A13, mode=Pin.OUT)

 结论: help(pyb.Pin.board)输出板子上引脚的别名和芯片上定义好的引脚名,如:LED_YELLOW -- Pin(Pin.cpu.A15, mode=Pin.OUT),这个引脚的别名:LED_YELLOW,芯片上定义的引脚名:A15。

获取pyboard上引脚的别名芯片定义的引脚名的方法:help(pyb.Pin.board)

>>> help(pyb.Pin.board)
object <class 'board'> is of type type
  X1 -- Pin(Pin.cpu.A0, mode=Pin.ALT, af=Pin.AF2_TIM5)
  X2 -- Pin(Pin.cpu.A1, mode=Pin.IN)
  X3 -- Pin(Pin.cpu.A2, mode=Pin.IN)
  X4 -- Pin(Pin.cpu.A3, mode=Pin.IN)
  X5 -- Pin(Pin.cpu.A4, mode=Pin.ANALOG)
  X6 -- Pin(Pin.cpu.A5, mode=Pin.ALT, pull=Pin.PULL_UP, af=Pin.AF5_SPI1)
  X7 -- Pin(Pin.cpu.A6, mode=Pin.ALT, pull=Pin.PULL_UP, af=Pin.AF5_SPI1)
  X8 -- Pin(Pin.cpu.A7, mode=Pin.ALT, pull=Pin.PULL_UP, af=Pin.AF5_SPI1)
  X9 -- Pin(Pin.cpu.B6, mode=Pin.ALT_OPEN_DRAIN, pull=Pin.PULL_UP, af=Pin.AF4_I2C1)
  X10 -- Pin(Pin.cpu.B7, mode=Pin.ALT_OPEN_DRAIN, pull=Pin.PULL_UP, af=Pin.AF4_I2C1)
  X11 -- Pin(Pin.cpu.C4, mode=Pin.IN)
  X12 -- Pin(Pin.cpu.C5, mode=Pin.IN)
  X17 -- Pin(Pin.cpu.B3, mode=Pin.IN, pull=Pin.PULL_UP)
  X18 -- Pin(Pin.cpu.C13, mode=Pin.IN)
  X19 -- Pin(Pin.cpu.C0, mode=Pin.ANALOG)
  X20 -- Pin(Pin.cpu.C1, mode=Pin.IN)
  X21 -- Pin(Pin.cpu.C2, mode=Pin.IN)
  X22 -- Pin(Pin.cpu.C3, mode=Pin.IN)
  Y1 -- Pin(Pin.cpu.C6, mode=Pin.IN)
  Y2 -- Pin(Pin.cpu.C7, mode=Pin.IN)
  Y3 -- Pin(Pin.cpu.B8, mode=Pin.ALT, pull=Pin.PULL_UP, af=Pin.AF9_CAN1)
  Y4 -- Pin(Pin.cpu.B9, mode=Pin.ALT, pull=Pin.PULL_UP, af=Pin.AF9_CAN1)
  Y5 -- Pin(Pin.cpu.B12, mode=Pin.IN)
  Y6 -- Pin(Pin.cpu.B13, mode=Pin.IN)
  Y7 -- Pin(Pin.cpu.B14, mode=Pin.IN)
  Y8 -- Pin(Pin.cpu.B15, mode=Pin.IN)
  Y9 -- Pin(Pin.cpu.B10, mode=Pin.IN)
  Y10 -- Pin(Pin.cpu.B11, mode=Pin.IN)
  Y11 -- Pin(Pin.cpu.B0, mode=Pin.IN)
  Y12 -- Pin(Pin.cpu.B1, mode=Pin.IN)
  ....

 下面这些是pyboard开发板上已经占用的引脚名单:

  help(pyb.Pin.board)
 ...
SW -- Pin(Pin.cpu.B3, mode=Pin.IN, pull=Pin.PULL_UP) LED_RED -- Pin(Pin.cpu.A13, mode=Pin.OUT) LED_GREEN -- Pin(Pin.cpu.A14, mode=Pin.OUT) LED_YELLOW -- Pin(Pin.cpu.A15, mode=Pin.OUT) LED_BLUE -- Pin(Pin.cpu.B4, mode=Pin.OUT) MMA_INT -- Pin(Pin.cpu.B2, mode=Pin.IN) MMA_AVDD -- Pin(Pin.cpu.B5, mode=Pin.OUT) SD_D0 -- Pin(Pin.cpu.C8, mode=Pin.ALT, pull=Pin.PULL_UP, af=12) SD_D1 -- Pin(Pin.cpu.C9, mode=Pin.ALT, pull=Pin.PULL_UP, af=12) SD_D2 -- Pin(Pin.cpu.C10, mode=Pin.ALT, pull=Pin.PULL_UP, af=12) SD_D3 -- Pin(Pin.cpu.C11, mode=Pin.ALT, pull=Pin.PULL_UP, af=12) SD_CMD -- Pin(Pin.cpu.D2, mode=Pin.ALT, pull=Pin.PULL_UP, af=12) SD_CK -- Pin(Pin.cpu.C12, mode=Pin.ALT, pull=Pin.PULL_UP, af=12) SD -- Pin(Pin.cpu.A8, mode=Pin.IN, pull=Pin.PULL_UP) SD_SW -- Pin(Pin.cpu.A8, mode=Pin.IN, pull=Pin.PULL_UP) USB_VBUS -- Pin(Pin.cpu.A9, mode=Pin.IN) USB_ID -- Pin(Pin.cpu.A10, mode=Pin.ALT_OPEN_DRAIN, pull=Pin.PULL_UP, af=10) USB_DM -- Pin(Pin.cpu.A11, mode=Pin.ALT, af=10) USB_DP -- Pin(Pin.cpu.A12, mode=Pin.ALT, af=10)

 获取LED类

>>> import pyb
>>> help(pyb.LED)
object <class 'LED'> is of type type
  on -- <function>
  off -- <function>
  toggle -- <function>
  intensity -- <function>
>>> dir(pyb.LED)
['__class__', '__name__', 'intensity', 'off', 'on', 'toggle']
>>>

在LED类里面有四个方法,on()、off()、toggle()、intensity([value]):

构造一个LED类的实例:pyb.LED(id)id = 1-4  (1-red、2-green、3-orange、4-blue)

红灯:

led_red = pyb.LED(1)

LED类里面的方法使用示例: 

>>> from pyb import LED
>>> led_red = LED(1)  #构造一个对象(红灯)
>>> led_red.on()   #点亮红灯
>>> led_red.off()  #熄灭红灯
>>> led_red.toggle()  #点亮/熄灭红灯(引脚电平状态翻转)

 除了打开、关闭、翻转功能外,部分 LED 还可以控制亮度。在 PYB V10上,LED3和LED4支持亮度调整功能,如可以这样控制LED3的亮度:

pyb.LED(3).intensity(128)

亮度的范围为0~255,0最暗(关闭),255最亮。对于那些不支持亮度功能的LED,在设置亮度时,0是关,大于0就是开。

流水灯:

>>> led_color = [pyb.LED(i) for i in range(1,5)]
>>> n = 0
>>> while True:
...     n = (n+1) % 4
...     leds[n].toggle()
...     pyb.delay(50)

往返式流水灯

>>> from pyb import LED
>>> n = 1  #定义变量
>>> state = 1
>>> while True:
...     LED(n).toggle()  #翻转LED
...     pyb.delay(500)   #延时
...     LED(n).toggle()  #再次翻转
...     n = n + state   #改变LED序号
...     if (n > 3) or (n<2):
...         toggle = -state  #改变方向
...

异常时执行finally里面的程序段

led_color = [pyb.LED(i) for i in range(1,5)]
try:
    while True:
        n = (n + 1) % 4
        leds[n].toggle()
        pyb.delay(50)
finally:
    for n in led_color:
        n.off()

呼吸灯(LED(3)、LED(4)

led_orange = pyb.LED(4)
intensity = 0
flag = True
while True:
    if flag:
        intensity = (intensity + 1) % 255
        if intensity == 0:
            flag = False
            intensity = 255
    else:
        intensity = (intensity - 1) % 255
        if intensity == 0:
            flag = True
    led_orange.intensity(intensity)
    pyb.delay(30)

 下一章节:Pyboard基础功能探索---按键、GPIO

转载于:https://www.cnblogs.com/iBoundary/p/11502317.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dmpnosvn28419/article/details/101463359

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文