Raspi3にボタンを付けたときのチャタリング防止
Raspi1では遅くて置きなかったシェルスクリプトでのボタン検知のチャタリング。
Raspi3ではとても激しくて、ちょっと押すと10-16くらい返ってくる。
Raspi1でもちゃんと書いとけって話だけどね。
Pythonでちゃんと書いている人も多い中、シェルスクリプトで実装しているので書くのめんどくさいんですよ。
んで、簡単にこんな方法でやってしまいました。ごめんなさい。
良い子は真似しないでね。
$ cat button.sh #!/bin/bash gpio -g mode 27 in gpio -g mode 27 up while :; do button_status=`gpio -g read 27` if [ $button_status -eq 0 ]; then echo 'button on' sleep 0.3 echo fi done
ボタン検知したら、0.3秒寝かせるのがポイント。
一行で実装できた!
できるだけ早く連打すると、たまに検知できないことあるけど、普通は連打しても大丈夫。
後のechoだけの行はチャタリング検知用なのでなくていいです。
ほんとに、良い子は真似してはいけないですよ。