简 介: 通过对这个版本MicroPython中的Signal功能进行测试,可以看到它现在还存在问题。后来经过SuYong修正之后,问题解决了。

关键词MicroPythonMM32Signal

#mermaid-svg-jSHRB58aQano03DO {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jSHRB58aQano03DO .error-icon{fill:#552222;}#mermaid-svg-jSHRB58aQano03DO .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-jSHRB58aQano03DO .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-jSHRB58aQano03DO .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-jSHRB58aQano03DO .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-jSHRB58aQano03DO .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-jSHRB58aQano03DO .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-jSHRB58aQano03DO .marker{fill:#333333;stroke:#333333;}#mermaid-svg-jSHRB58aQano03DO .marker.cross{stroke:#333333;}#mermaid-svg-jSHRB58aQano03DO svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-jSHRB58aQano03DO .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-jSHRB58aQano03DO .cluster-label text{fill:#333;}#mermaid-svg-jSHRB58aQano03DO .cluster-label span{color:#333;}#mermaid-svg-jSHRB58aQano03DO .label text,#mermaid-svg-jSHRB58aQano03DO span{fill:#333;color:#333;}#mermaid-svg-jSHRB58aQano03DO .node rect,#mermaid-svg-jSHRB58aQano03DO .node circle,#mermaid-svg-jSHRB58aQano03DO .node ellipse,#mermaid-svg-jSHRB58aQano03DO .node polygon,#mermaid-svg-jSHRB58aQano03DO .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-jSHRB58aQano03DO .node .label{text-align:center;}#mermaid-svg-jSHRB58aQano03DO .node.clickable{cursor:pointer;}#mermaid-svg-jSHRB58aQano03DO .arrowheadPath{fill:#333333;}#mermaid-svg-jSHRB58aQano03DO .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-jSHRB58aQano03DO .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-jSHRB58aQano03DO .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-jSHRB58aQano03DO .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-jSHRB58aQano03DO .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-jSHRB58aQano03DO .cluster text{fill:#333;}#mermaid-svg-jSHRB58aQano03DO .cluster span{color:#333;}#mermaid-svg-jSHRB58aQano03DO div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-jSHRB58aQano03DO :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

MicroPython Signal功能
目 录
Contents
为何使用Signal?
控制LED
何时使用Signal?
使用Signal
测试Signal
控制LED
测试结论

§01 MicroPython
  Signal功能


一、为何使用Signal?

  根据 MicroPython Signal 中的定义,定义Signal是对于Pin的逻辑功能进行自然的延拓。通过它附加是否对实际逻辑进行反向与否,可以将具体管脚的高电平或者低电平定义为on,off,asserted, dissasserted等。从而在逻辑上将控制与实际的物理量分离。

下面是通过dir(machine)实时的结果。

['__name__', 'ADC', 'DAC', 'ENC', 'PWM', 'Pin', 'SDCard', 'SPI', 'Signal', 'SoftI2C', 'SoftSPI', 'Timer', 'UART', 'freq', 'mem16', 'mem32', 'mem8']

1、控制LED

  比如下面两种MCU控制LED的方案中,如果直接使用Pin来控制,则需要分别使用:led_pin(1), led_pin(0)来点亮LED。

▲ 图1.1 MCU控制LED点亮与熄灭

  如果在定义了led_pin之后,再使用Signal定义两个Signal变量,分别利用设置属性invert,便可以通过Signal的on() 来点亮LED了。

# Suppose you have an active-high LED on pin 0
led1_pin = Pin(0, Pin.OUT)
# ... and active-low LED on pin 1
led2_pin = Pin(1, Pin.OUT)# Now to light up both of them using Pin class, you'll need to set
# them to different values
led1_pin.value(1)
led2_pin.value(0)# Signal class allows to abstract away active-high/active-low
# difference
led1 = Signal(led1_pin, invert=False)
led2 = Signal(led2_pin, invert=True)# Now lighting up them looks the same
led1.value(1)
led2.value(1)# Even better:
led1.on()
led2.on()

2、何时使用Signal?

(1)使用Signal

  • 控制简单的on/off的动作(包括SoftPWM),比如LED,多段指示器,继电器,蜂鸣器;
  • 读入简单二进制传感器,比如按钮,拉高,或者置低;干簧管,湿度/火焰irgjqi dg .

  总体上,如经过你对实际的物理器件、传感器进行GPIO访问的时候,适合使用Signal。

(2)使用Pin

  如果使用高电平协议,或者总线与其它复杂器件通信的时候,比如 One-Wires 通讯设备,这类直接应用bit-banging方式通讯应用场合,适合直接使用Pin的功能。

3、使用Signal

  应用Signal可以屏蔽了具体的物理层面中对于实际active-high, active-low的区分,可以最大长度使得你的MicroPython程序可以适应于绝大部分的硬件电路板,而不至于仅仅由于LED,Button,Relay的外部的驱动方式不同而使得应用程序表现不同。

二、测试Signal

1、控制LED

  下面程序,对于PB2控制的LED(active-high)进行周期闪烁。

from machine                import Pin,Signal
import utimeled_pin = Pin('PB2', Pin.OUT_PUSHPULL)
led = Signal(led_pin, invert=False)print('Test Signal..')while True:led_pin(1)utime.sleep_ms(100)led_pin(0)utime.sleep_ms(100)

  上面版本中,显示演示了,直接使用led_pin的函数来控制LED的闪烁。

▲ 图1.2.1 LED在led pin控制下闪烁

  修改成信号量Signal量led.on(), led.off() 之后进行控制:

while True:led.on()utime.sleep_ms(100)led.off()utime.sleep_ms(100)

  但是LED并没有动作,这说明在昨天实现的Signal中还存在问题。

▲ 图1.2.2 LED在led.on(), led.off()控制下并没有动作

※ 测试结论 ※


  通过对这个版本MicroPython中的Signal功能进行测试,可以看到它现在还存在问题。

一个小时后,SuYong根据问题解决了移植版本中的隐层的问题。 在mm32f3270上为MicroPython启用Signal模块 。测试之后,可以通过Signal进行Pin的控制了。


■ 相关文献链接:

  • MicroPython Signal
  • ESP32 One-Wire驱动功能

● 相关图表链接:

  • 图1.1 MCU控制LED点亮与熄灭
  • 图1.2.1 LED在led pin控制下闪烁
  • 图1.2.2 LED在led.on(), led.off()控制下并没有动作

测试MM32F3277中的MicroPython的Signal功能相关推荐

  1. 为什么在MM32中的MicroPython中无法打开二进制文件呢?

    简 介: 对于在MM32F3277的MicroPython下, 对于SD卡中的文件按照二进制方式进行读写进行测试,发现MicroPython下无法支持对于二进制文件的操作.根据现在这种测试,需要找到具 ...

  2. SAP MM IV中的Duplicated Invoice Check功能的测试

    SAP MM IV中的Duplicated Invoice Check功能的测试 进入如下界面: 比如1000公司代码下我勾选了Check Company Code和Check Reference标记 ...

  3. 测试管理中的一个问题—功能点覆盖还是功能测试点覆盖

    功能点覆盖是在测试工作中经常提到的一个东西, 很多测试人员为了对功能点进行覆盖费劲了心思,可惜的是当他们将达到功能点覆盖100%的,系统,仍然不断出现问题,于是领导的责备,用户的冷眼,开发人员的讥讽就 ...

  4. 汇编语言: 从键盘上输入一串字符(用回车键结束,使用 10 号功能调用。)放在 STRING 中,试 编制一个程序测试字符串中是否存在数字。如有,则把 CL 的第 5 位置 1,否则将该位置置 0。

    从键盘上输入一串字符(用回车键结束,使用 10 号功能调用.)放在 STRING 中,试 编制一个程序测试字符串中是否存在数字.如有,则把 CL 的第 5 位置 1,否则将该位置置 0. data s ...

  5. 编写一个用户类(Sysuser),属性包括用户名、真实姓名、年龄、出生日期、密码,类方法中包含单独修改用户年龄、判断用户名和密码、显示用户信息功能,在用户测试类中(TestSysuser),根据用户输

    #本关任务: 编写一个用户类(Sysuser),属性包括用户名.真实姓名.年龄.出生日期.密码,类方法中包含单独修改用户年龄.判断用户名和密码.显示用户信息功能,在用户测试类中(TestSysuser ...

  6. 调试来自于逐飞的MM32F3277移植有MicroPython开发板

    简 介: 对于从逐飞寄送的MicroPython开发板进行初步测试,建立了基于REPL进行交互式开发的环境. 关键词: MicroPython,MM32,Thonny #mermaid-svg-BUT ...

  7. 测试中如何管理外包质量_如何从测试自动化中实现价值

    如果几年前,质量管理部门都试图通过ROI指标来证明对测试的投资是合理的,那么现在情况发生了变化,是时候重新审视这个问题了.当实施连续测试,并且每天在不同的环境下以不同的角色运行多次测试自动化时,由于测 ...

  8. 软件测试用python一般用来做什么-如何将Python应用到实际测试工作中?

    基础问题(学员的问题) 学员问题第一类"Python的应用" (1)如何将Python运用到实际测试工作中,Python自动化能做哪些方面的自动化 (2)怎么利用python进行自 ...

  9. 测试设计中需要考虑的22种测试类型

    测试设计中需要考虑的22种测试类型 测试设计中需要考虑的22种测试类型 纪玉春 来自21CMM 黑盒测试:不基于内部设计和代码的任何知识,而是基于需求和功能性. 白盒测试:基于一个应用代码的内部逻辑知 ...

最新文章

  1. 京东Vue组件库NutUI 2.0发布:将支持跨平台!
  2. 16道嵌入式C语言面试题(经典) 预处理器(Preprocessor)
  3. Spring Cloud——基于Dubbo的分布式Session解决方案
  4. 2020下半年新机最新消息_三星小米华为苹果纷纷曝光高端机,这么多你选择谁?...
  5. LoadRunner11-遇到问题及解决办法
  6. @getMapping与@postMapping
  7. cad镂空图案切割_贺卡纸张卡片激光镂空雕花设备 激光打标机
  8. window7 修改docker安装的machine 位置
  9. eclipse如何显示行数
  10. POI 读取 Excel 文件(2003版本与2007版本的差异之处)
  11. sogou rank查询接口
  12. 模拟CMOS集成电路设计中的电流镜及用Cadence Virtuoso IC617设计并仿真有关电路
  13. 贪心科技机器学习训练营(七)
  14. Dovecot 邮件假删除、回收站功能 (使用lazy-expunge插件)
  15. Windows驱动的加载顺序
  16. ★如何提高睡眠质量?
  17. 莫纳什大学计算机专业研究生在哪个校区,盘点莫纳什大学2019年计算机类硕士课程...
  18. 程序执行报错Missing Connection or ConnectionString 解决方法
  19. arcgis栅格数据平滑_ArcGIS教程:基于ArcGIS的栅格图像平滑处理
  20. 思科 计算机网络 第4章测试考试 答案

热门文章

  1. EMC首席数据治理官:“受托人”是数据湖问责的关键
  2. Linux下批量替换文件内容方法
  3. [转]DPM2012系列之四:配置邮件报警功能
  4. spintboot学习笔记
  5. 在用虚拟机做Windows Server 2008 R2实验时应注意的问题
  6. 微信支付报错:app没有获取微信支付权限
  7. AngularJS自定义表单验证
  8. php安装redis扩展模块
  9. 又见灵异事件,li中的span右浮动遇到的问题
  10. Linux基础系列(四)系统用户和组管理