from machine import Pin, Timer
switch_pin = Pin(0, Pin.IN, Pin.PULL_UP)
# デバウンス用のタイマー
debounce_timer = Timer(-1) #タイマーを初期化
# 割り込みハンドラ
def handle_interrupt(pin):
switch_pin.irq(handler = None) #最初に、割り込みハンドラを無効にします(再度の割り込みを防ぐため)。
debounce_timer.init(mode=Timer.ONE_SHOT, period=20, callback=debounce_callback) #次に、指定されたデバウンス時間後に debounce_callback メソッドを呼び出すタイマーを設定します。
# デバウンス後の処理
def debounce_callback(timer):
# スイッチの状態を確認して処理を行う
if switch_pin.value() == 0:
print("スイッチが押されました")
switch_pin.irq(handler = handle_interrupt) #最後に、割り込みハンドラを再度有効にします。
# スイッチピンの設定
switch_pin.irq(trigger=Pin.IRQ_FALLING, handler=handle_interrupt)
# メインループ
while True:
pass