1. 消除引脚输入的抖动

用作开关或其他机械设备输入的引脚上可能会产生大量噪声,当第一次按下或释放开关时,会从低电平快速变为高电平。可以使用电容器(去抖动电路)消除这种噪声。也可以使用一个简单的函数来消除它,以确保引脚上的值稳定。

下面的函数就是这样做的。它获取给定引脚的当前值,然后等待值更改。新的引脚值必须连续 20 毫秒稳定才能记录变化。如果您仍然有噪音,您可以调整这个时间(比如 50 毫秒)。

import pyb

def wait_pin_change(pin):
    # wait for pin to change value
    # it needs to be stable for a continuous 20ms
    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()