告别硬件差异!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>)

相关推荐
dozenyaoyida4 小时前
Zephyr静态注册机制详解:SYS_INIT和BT_CONN_CB_DEFINE为什么没人调用也执行
嵌入式·nordic·链接器·zephyr·蓝牙开发
蓝天居士1 天前
PY32F系列MCU在OTA时App区概率性跑不起来的根因分析(3)
mcu·嵌入式
jianqiang.xue1 天前
【CStackGUI 实战】画板 drawpad:鼠标拖拽作图、撤销 / 重做、导出 PNG
单片机·嵌入式·cstackgui·c语言gui·可视化拖拽
嵌入式分享2 天前
BSP调试#01:RTC(RK3588)
嵌入式·实时音视频
嵌入式分享2 天前
嵌入式分享#38:踩坑实录!我在 RK3576 HDMI 搭错线
嵌入式
oku620893 天前
单片机底层系列:C 库运行时——从 libspace 到多任务与中断安全
嵌入式
Zwawa3 天前
反馈:让系统知道自己做得对不对
c语言·单片机·嵌入式
蓝天居士4 天前
PY32F系列MCU在OTA时App区概率性跑不起来的根因分析(2)
mcu·嵌入式
剑指offer.4 天前
ARM裸机开发-SPI
arm开发·嵌入式硬件·嵌入式·arm
___波子 Pro Max.4 天前
软件开发里的 prebuilt 是什么
嵌入式