raspbery Pi でボタンからの入力を検知

raspbery Pi でボタンからの入力を検知

GPIOポートが out モードのときなら
値が0なら 0V
値が1なら 3.3V
の電圧が出力される

これに対して
inモード、つまり入力のときには
GPIOポートの電圧に応じた値を読み込める

電圧 0V なら 0
3.3V なら 1
となる

GPIOポートはデジタル入力のため
値が 0 と 1 しかない

例えば
3.3V の半分の1.65V の電圧を加えても 0.5 にはならず
0と1のどっちかという不安定な値になってしまう

このため Raspberry Pi のGPIOポートに入力する電圧は値を正しく検知できるように
3.3V

0V
にする

今回はボタンをおすと 3.3 V の電圧が加わるようにする

使うパーツは
10KΩの抵抗
タクトスイッチ
ジャンパーケーブル3本
ブレッドボード
そして Raspberry Pi 本体

部品に関しては Amazon で購入

電子部品についてはセットであったのでこれを購入

抵抗に関しては少し分かりにくいため
カラー抵抗値の写真早読み表!

を参考に
一番左が茶色のものが 10KΩということで使用

部品に関してはこれでOK

GPIOのヘッダピンになる Pin1
これは一番左上のピン

これは 3.3 V が出力されているので
ボタンが押されたら、この 3.3V が
GPIO25 の Pin22 に加わるようにする
この位置は右上3番めにある

そしてGNDとの間には
10KΩの抵抗を入れる

これがプルダウン抵抗
これがないと
ボタンをおすと GPIO25に 3.3 V が加わるけど
押していないと何もつながっていない状態になる
しかし
電圧は 0V にならずに不安定な状態になっている

これを防ぐために
高い抵抗値をもつ抵抗をいれることで
GND側に電圧を引っ張る

ちなみに
GND側に抵抗をいれることをプルダウンと呼ぶ

注意点として4本足のボタンを使うので
ボタンを押したときににどのピンとつながるのかを調べておく必要がある

これで準備できたので、まずはコマンドでボタンの状態を取得

LEDを光らせるのと同じ手順になるけど
今回は入力になるので
モードが in になる

まずはGPIO25を inモードで使用開始宣言

echo 25 > /sys/class/gpio/export 

で使用するポートを宣言

echo in > /sys/class/gpio/gpio25/direction 

でモードを in に指定

次に cat コマンドで値を読み込む

cat /sys/class/gpio/gpio25/value 

まずはボタンを押していない状態で実行すると

になる

ボタンを押しながら

cat /sys/class/gpio/gpio25/value 

を実行すると

になる

このように、信号の入出力もファイルを読み書きする感覚でGPIOポートを扱うことができる

そして、GPIOポートの使用が終了したら
unexport で終了宣言をする

echo 25 > /sys/class/gpio/unexport 

ちなみに、WiringPi を使えばもっと簡単に操作できる

gpio mode コマンドで in モードに設定して
gpio read コマンドで値を読み出せる

まずはポートの設定
構文は

gpio -g mode 使用するGPIOポート番号 in

今回なら GPIO25 なので

gpio -g mode 25 in

次に gpio read コマンドで値を読み込む

構文は

gpio -g read GPIOポート番号

今回は GPIO25 なので

gpio -g read 25

これでボタンを入れながら実行すると

と表示され、入れずに実行すると

となる

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です