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。
我目前有这个 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。