ボタン(タクトスイッチ)の押し下げを検知する(WebIOPi利用)
解説
(「Raspberry Pi 1」を使用した、古い情報です。
新しい情報は、「ホーム > フィジカルコンピューティング > Raspberry Pi 3 > ボタン(タクトスイッチ)の押し下げを検知する(WebIOPi利用)」にまとめています。)
GPIO.digitalRead関数使用することで、タクトスイッチの状態を知ることができます。
タクトスイッチが「押されてない状態」から「押されている状態」に変化した時がタクトスイッチが押された時です。
タクトスイッチは、バウンシングと呼ばれる、接点がバウンドして細かくスイッチのON・OFFが切り替わることが発生します。
バウンシングの対策をしないと、スイッチを1回押したときに、複数回押されたと誤認識してしまいます。
「押されてない状態」から「押されている状態」の変化を1度認識したら、しばらく(たとえば0.5秒)は、状態の変化を無視するようにすると、バウンシングの対策となります。
部品表
部品名 | 数量 | 商品名 | 参考価格 |
---|---|---|---|
タクトスイッチ | 1 | タクトスイッチ | 1個10円 |
10kΩ抵抗器 | 1 | カーボン抵抗(炭素皮膜抵抗) 1/6W 10kΩ | 100本100円 |
LED | 1 | 赤色LED 3mm OSDR3133A | 100個350円 |
75Ω抵抗器 | 1 | カーボン抵抗(炭素皮膜抵抗) 1/6W 75Ω | 100本100円 |
Raspberry Pi | 1 | Raspberry Pi Type B 512MB | 3,300円 |
ブレッドボード | 1 | EIC-801 | 250円 |
ジャンパーワイヤ | 適量 | ジャンパーワイヤ(オス-メス) | 10本300円 |
接続例
WebIOPiのインストール
Raspberry Pi にWebIOPiをインストールしてない場合は、まず、WebIOPiをインストールします。
WebIOPiのインストール
スクリプトファイルの作成
「/home/pi/work/webiopi」フォルダに、「pushbutton.py」というファイル名で、以下の内容のスクリプトファイルを作成します。
WebIOPi サービスの設定の変更
WebIOPi のサービスを開始したときに、作成したスクリプトが実行されるように、WebIOPi サービスの設定を変更します。
WebIOPi サービスの設定は、「/etc/webiopi/config」ファイルに記述されています。
以下のコマンドを実行し、「/etc/webiopi/config」ファイルを開きます。
[SCRIPTS] セクションを探し、[SCRIPTS] セクションの「myscript =」を以下のように書き換えます。
編集し終えたら、
Ctrl + O
で上書き保存し、
Ctrl + X
で nano を終了します。
実行
WebIOPi のサービスを開始します。
WebIOPi のサービスを終了するには、以下のコマンドを実行します。
WebIOPiをサービスとして起動した場合には、デバッグ出力がコンソール画面に表示されません。
デバッグ出力をコンソール画面に表示させるには、WebIOPiを、アプリケーションとして起動します。起動の際には、デバッグを有効にするオプションを追加して起動します。以下のコマンドを実行します。
上記コマンドによりWebIOPiを起動すると、以下のように、デバッグ出力がコンソール画面に表示されます。
WebIOPiアプリケーションは、
Ctrl + C
で終了します。