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

相关推荐
v_for_van4 小时前
C语言__attribute__
服务器·c语言·开发语言·mcu·嵌入式·嵌入式实时数据库
xx~t20 小时前
嵌入式——进程与线程1
linux·c语言·学习·嵌入式·进程与线程
潘潘的嵌入式日记1 天前
协议旧指令该不该删?4 个检查决定删除还是保留兼容
重构·嵌入式·协议·经验·代码维护
虎王物联2 天前
工业Modbus TCP协议深度实战:STM32 HAL库实现从机通信与数据上云
stm32·物联网·网络协议·tcp/ip·嵌入式
小柯博客2 天前
06 · 统一 libcamerasrc 与架构定型:3A、CPU 归因与一次黑屏回归
c语言·stm32·单片机·嵌入式硬件·架构·嵌入式·视频编解码
fanged4 天前
Yocto1--环境搭建和验证
大数据·搜索引擎·嵌入式
捷瑞电子工坊4 天前
FreeRTOS中断管理:从原理到实践(标准库版)
嵌入式·freertos·实时操作系统·任务通知·临界区·中断管理·二值信号量
dozenyaoyida4 天前
LittleFS 嵌入式文件系统机制拆解与某 RISC-V MCU 实测配置
单片机·嵌入式·文件系统·risc-v·littlefs·flash存储
江洋之道5 天前
嵌入式LVGL UI架构实践:MVP分层 + 双链表路由,构建低耦合、易维护的嵌入式界面
c语言·架构·嵌入式·lvgl