告别硬件差异!MicroPython Signal 类:让你的 GPIO 代码跨板运行无压力

1.machine.Signal 类的构造方法

Signal 类是对 Pin 类的进一步封装,通过 Signal 类我们可以设置是否对某个引脚的逻辑进行反向(简单来说,原先我们设置高电平为逻辑 1、低电平为逻辑 0,对其进行反向后,可以设置高电平为逻辑 0、低电平为逻辑 1),从而在逻辑上将控制与实际的物理量分离。

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

而在使用 Signal 类后,我们可以使用同一个方法(例如 led_pin(1))来控制 LED 灯的点亮而无需关注外部连接电路的差异。通过使用 Signal 类,我们可以忽略具体的物理层面中对于高低电平的区分,使得我们的程序只需要修改 Signal 类中的一些参数就可以在绝大部分外部器件电路连接方式不同的电路板 ​中无差别运行而不会产生 BUG。

Signal 类适用于以下应用场景:

  • 输出高低电平控制外部传感器,例如:软件实现 PWM 驱动电机、蜂鸣器或 LED 灯、控制数码管的亮灭、控制继电器的开合
  • 读取外部传感器发送的高低电平,例如:读取按键是否按下,干簧管、红外传感器、湿度/火焰传感器的数字输出

Signal 的构造函数有两种:

  • 通过将所需的 Pin 参数直接传递给 Signal 构造函数,无需创建中间 Pin 对象。需要注意的是,该方法不一定所有 开发板 都适用!
  • 通过包装现有的 Pin 对象(该方法所有 开发板 都适用):

2.machine.Signal 类的其他方法

3d4998e29792.png>)

相关推荐
Zwawa3 小时前
从 printf 到曲线:把数据送上 VOFA+
c语言·单片机·嵌入式
LCG米19 小时前
STM32 ADC多通道DMA定时器触发实测:TRGO触发链、采样率精确控制与乒乓缓冲落地
stm32·单片机·嵌入式·adc
LCG米2 天前
STM32硬件SPI驱动SSD1306 OLED实测:上电黑屏排查、页寻址模式与取模扫描方向陷阱
stm32·单片机·嵌入式硬件·嵌入式
探鸽小钛2 天前
4G 终端 ES8311 - 挂断一次,下次说话就没声了之解决办法
物联网·音视频·嵌入式·esp32·webrtc
Zwawa3 天前
编译器工具链:GCC、Clang、MSVC、ICC、armclang
c语言·嵌入式·编译器
用户8351414049493 天前
Makefile从零写起:每条规则在干什么
嵌入式
pipixia200333 天前
C++继承面试四连问:内存叠加、私有继承、sizeof、权限重映射
c++·面试·嵌入式·继承·面向对象·对象模型
shimly1234563 天前
(undone) 野火嵌入式 (1) 打开例程工程
嵌入式
Zwawa4 天前
一只按键不只“按下”:短按、长按和连按如何共存
c语言·单片机·嵌入式
Zevalin爱灰灰4 天前
Linux入门第一部分(Ubuntu入门篇) 第三章 shell脚本入门(一)
linux·ubuntu·嵌入式