Micropython:如何去抖 Pyboard USR 开关?

Micropython: How to debounce the Pyboard USR switch?

我目前有这个 MicroPython code running on a Pyboard v1.1:

import pyb

def toggle_led():
    pyb.LED(3).toggle()

sw = pyb.Switch()
sw.callback(toggle_led)

但是,此设置容易受到 contact bounce.

的影响

我尝试加起来 pyb.delay(500) 但没有成功。

有没有一种优雅的方法来解决 Pyboard 上的 USR 开关反弹问题?

以下是对我有用的方法。我的灵感来自 MicroPython forum.

上的 post 中描述的过程
import pyb

def toggle_led():
    pyb.disable_irq()
    pyb.delay(100)
    if sw.value(): pyb.LED(3).toggle()
    pyb.enable_irq()

sw = pyb.Switch()
sw.callback(toggle_led)

更好:uasyncio

有一种不需要中断的更好的方法。 这是 Peter Hinch 出色的 uasyncio 教程中的 link 到 buttons example