用作来自开关或其他机械设备输入的引脚可能有许多噪音,当开关首次按下或松开时迅速从低变为高。 此噪音可用电容器(去抖电路)来消除。也可使用确保引脚上的值稳定的简单函数来消除。
下面的函数即可完成此功能。其获取给定引脚的当前值,并等待此值改变。 新的引脚值须能在连续20毫秒内保持稳定以使其可记录此改变。若仍存在噪音,您自行调整持续时间(例如50毫秒)。 :
import pyb def wait_pin_change(pin): # wait for pin to change value 等待引脚改变值 # it needs to be stable for a continuous 20ms 引脚值需在连续20毫秒内保持稳定 cur_value = pin.value() active = 0 while active < 20: if pin.value() != cur_value: active += 1 else: active = 0 pyb.delay(1)
这样使用:
import pyb pin_x1 = pyb.Pin('X1', pyb.Pin.IN, pyb.Pin.PULL_DOWN) while True: wait_pin_change(pin_x1) pyb.LED(4).toggle()