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

智能推荐

基于Java的医院挂号系统_java后端开发 预约挂号功能 可以使用什么技术-程序员宅基地

文章浏览阅读382次。医院挂号系统是基于Java Web技术的SSM框架的系统,基于Mysql数据。对9张数据库表进行增删改查操作。适合毕业设计、课程设计、大作业等。医院挂号系统是基于Java Web技术的SSM框架的系统,基于Mysql数据。对9张数据库表进行增删改查操作。适合毕业设计、课程设计、大作业等。医院挂号系统是基于Java Web技术的SSM框架的系统,基于Mysql数据。对9张数据库表进行增删改查操作。适合毕业设计、课程设计、大作业等。_java后端开发 预约挂号功能 可以使用什么技术

Spring Data JPA复杂动态查询_jpa multiselect-程序员宅基地

文章浏览阅读9.4k次,点赞5次,收藏28次。Spring Data JPA其诸多优点给我们的工作带来了很多便利,但对于接触不久的同学来说,有些情况让我们头疼。一些复杂的查询,比如涉及到聚合函数、动态多条件等,着实有些棘手。在不够了解的情况下,觉得Spring Data JPA在这方面不太人性化,有时候我们干脆使用原生sql粗暴的来解决这类查询问题。但这与Spring Data JPA的初衷是相悖的,在不断的学习中,慢慢发现Spring Da..._jpa multiselect

vue实现的步骤条组件——2种方法_vue步骤条 如何实现-程序员宅基地

文章浏览阅读3.5k次,点赞4次,收藏6次。一、语言:vue样式如下:2.代码:根据长度百分比计算样式<template> <!-- 步骤条盒子 --> <div class="steps-box"> <!-- 步骤条 --> <div class="Article-steps" :class="data.stepList.length <= activeIndex ? 'step-over' : ''" > _vue步骤条 如何实现

printf串口打印数据以及进阶调试用法_ll库printf-程序员宅基地

文章浏览阅读2.6k次。一、前言实现原理:在C库中,printf()等输出流函数都是通过fputc()这个函数实现的,所以我们通过重映射的方式,修改这个函数的定义使它输出在STM32的寄存器中,便可以实现使用printf()函数在STM32串口上输出数据的功能。二、printf串口打印实现1.使用LL库添加下面的fputc重定义代码://重映射fputc函数,此函数为多个输出函数的基础函数int fputc(int ch, FILE *f){ while (USART_GetFlagStatus(USART1, _ll库printf

ORACLE 编程的集合_oracle编程声明集合-程序员宅基地

文章浏览阅读587次。文章正文: oracle|问题ORACLE常用傻瓜问题1000问 1. Oracle安装完成后的初始口令?  internal/oracle   sys/change_on_install   system/manager   scott/tiger   sysman/oem_temp 2. ORACLE9IAS WEB CACHE的_oracle编程声明集合

2022 [KDD] 多视图解释轨迹:用于预计到达时间的层次自注意网络-程序员宅基地

文章浏览阅读61次,点赞2次,收藏2次。以往的预计到达时间估计(ETA)问题往往只建模子路段,而忽略了路口以及路段的信息。这篇论文提出了一种用于估计到达时间的分层自注意力网络(HierETA)。该网络通过多视图轨迹表示来解释轨迹的内在结构。它包括一个Segment编码器,用于描述细粒度的本地交通状况,以及一个联合link-intersection编码器,用于从粗粒度的角度描述轨迹属性。最后,设计了一个层次感知的注意力解码器来实现多视图时空特征之间的权衡。在两个大规模真实数据集上的实验表明,HierETA优于现有技术。

随便推点

在JavaScript中实现Array.count()方法-程序员宅基地

文章浏览阅读8.2k次。在JavaScript中实现Array.count()方法 正如我在博客上撰写有关MooTools的文章一样,我大部分时间都是在PHP上度过的。 如您所知,在PHP中获取数组大小的一种方法是使用count()函数: echo count($my_array); 在JavaScript中,获取数组大小的方法是使用length属性,如下所示: alert(my_array.length);..._js count函数

图片文字识别-管理敏感词_ocr实现对图片敏感信息检测-程序员宅基地

文章浏览阅读165次。OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程方案说明百度OCR收费Google维护的开源OCR引擎,支持Java,Python等语言调用Tess4J封装了Tesseract-OCR ,支持Java调用Tesseract支持UTF-8编码格式,并且可以“开箱即用”地识别100多种语言。_ocr实现对图片敏感信息检测

【常见问题】error LNK2005: 函数已经在某文件中定义_error lnk2005 已经在 中定义 cmake-程序员宅基地

文章浏览阅读631次。出现背景:在尝试用cmake编译调用yolo网络的c++项目时出现问题:main 已经在detect_cuda_compute_capabilities.obj 中定义错误说明:其实就是一个重定义问题解决方法:打开项目的解决方案管理器,在项目文件中找到出现重复定义的文件,右键移除项目即可。..._error lnk2005 已经在 中定义 cmake

Spring学习(四)引用外部属性文件、自动装配_spring factory 配置文件自动装配-程序员宅基地

文章浏览阅读119次。引用外部属性文件:当bean的配置信息逐渐增多时,查找和修改一些bean的配置信息变得更加困难。这时,可以将一部分信息提取到bean配置文件的外部,以properties格式的属性文件保存起来,同时在bean的配置文件中引用properties属性文件中的内容,从而实现一部分属性值在发生变化时只修改properties文件即可。这种技术多用于连接数据库的基本信息的配置以连接数据库的基本信息..._spring factory 配置文件自动装配

大学课程 操作系统 知识点总结 期末复习用,2024年最新阿里、百度等大厂技术面试题汇总-程序员宅基地

文章浏览阅读355次,点赞3次,收藏9次。Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察。

gateway 转发weboskct 报错 ClassCastException_org.apache.catalina.connector.responsefacade canno-程序员宅基地

文章浏览阅读3.1k次,点赞5次,收藏5次。使用环境: springcloud gateway 转发 websocket 报错报错内容:15:30:38.092 [http-nio-9999-exec-1] ERROR c.m.g.e.GlobalErrorWebExceptionHandler - [handle,38] - org.apache.catalina.connector.ResponseFacade cannot be cast to reactor.netty.http.server.HttpServerResponsej._org.apache.catalina.connector.responsefacade cannot be cast to reactor.netty

推荐文章

热门文章

相关标签