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だけの行はチャタリング検知用なのでなくていいです。


ほんとに、良い子は真似してはいけないですよ。