MicroPython 硬件交互:回调、蓝牙与扩展板使用指南
1. 回调函数的使用
在处理传感器或用户输入时,传统的轮询技术是通过循环不断检查传感器或可操作设备(如按钮)的状态,当触发条件满足时执行相应代码。但有一种更高效的方式——回调函数。
回调函数是我们定义并与固件关联的函数,当特定事件发生时,固件会自动执行这些函数。例如,Pyboard 固件中的 Switch
类( pyb.Switch
)就支持回调机制。
使用回调函数的好处是,程序可以继续执行其他任务(如读取传感器数据、显示信息等),当事件(中断)发生时,MicroPython 会暂停当前任务,执行回调函数,完成后再返回继续执行原代码。
不过,使用 Switch
回调函数有一些注意事项:
- 回调函数不能接受参数,也不允许创建数据(如字典、元组等)。
- 虽然回调函数可以访问全局变量,但使用状态变量时可能会抛出异常。
- 可以通过 switch.callback(None)
关闭回调函数。
下面是一个使用回调函数循环点亮开发板上 LED 的示例代码:
# MicroPython for the IOT - Chapter 6
# Simple example for working with interrupts using a class
# to store state.
#
import sys
# First, make sure this is