1. ピン入力のデバウンシング¶
スイッチまたは他の機械装置からの入力として使用されるピンは、スイッチが最初に押されたり離されたときに、低から高に急激に変化するノイズを多く含んでいます。このノイズは、コンデンサ(デバウンシング回路)を使って除去できます。また、ピンの値が安定していることを確認する簡単な関数を使用することで、これを排除することもできます。
次の関数はこれを行います。指定されたピンの現在の値を取得し、値が変更されるのを待ちます。新しいピン値が変わったと判断するには連続して 20ms の間安定していなければなりません。これでもノイズがある場合は、この時間を調整することができます(たとえば50ms)
import pyb
def wait_pin_change(pin):
# ピンの値の変化を待つ
# 値の変化は連続して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()