桜のはなびらどっとねっとロゴ

桜のはなびらどっとねっと

Raspberry Pi 2 でスイッチオン・オフを感知

この記事は1年以上前に投稿された記事です。 この警告表示について

IMG_4661_20150614

今まで主にGPIOを出力として使用してきましたが、今回は入力として使ってみたいと思います。

必要なもの

  • 適当なスイッチ
  • GPIOポート保護用抵抗(1kΩ程度)
  • プルダウン用の抵抗(20k~50kΩ程度)

つなぎ方

Raspberry Piにスイッチを接続する場合、接続方法としては2パターンあります。
1つは他のマイコンなどと同じく、プルダウン・プルアップ抵抗をつけて接続する方法。これが一番基本形であり他のマイコンに移植する際にも回路変更が少なくて済みます。
sw1

回路としてはこんなかんじになります。Raspberry Piの3.3V出力とGNDの間にスイッチと抵抗を入れ
スイッチ⇔プルダウン抵抗間に回路保護用の抵抗を入れてGPIOピンに接続します。
プルダウン抵抗は色々な解説サイトを見ていると20k~50kΩの抵抗と書かれているところが多いようですが、基本的に1k~100kΩの中で選択すればいいようです。最悪何かしらの抵抗があればいいという記事もありますが。基本的には以下のとおりみたいです。

  • 10kΩがいいらしい→上の推奨値なら20k
  • 省消費電力優先なら抵抗値の高い抵抗
  • 耐ノイズ性・応答性を優先するなら抵抗値の低い抵抗

今回は実験なので基本的に「入っていればいい」ということですが。実際にどの抵抗値の抵抗を採用するかは端子やスイッチのの許容電力などを考慮して決める必要があるそうです。
(まぁ、ホビーユースならとりあえず推奨値のうちで持ってる抵抗をつけておけばいいでしょう)

そしてもう一つは上記の回路に「プルダウン抵抗を省いた」接続方法です。

sw2

上で長々と説明しましたが、実はRaspberry PiのGPIOには「プルダウン・アップ抵抗」が内蔵されているので、コマンドで有効にしてあげれば無くても使えます。部品点数が少なくなるので通常はこちらを使っても大丈夫でしょう。ただし保護用の抵抗は入れておくべきだと思います。(最悪なくても人間は死にませんがパイが焼けます。)

配線

この回路図を参考に、適当なスイッチを適当に配線してください。
IMG_4665_20150614
プルダウン抵抗外付け時の例
なお、複数のスイッチを連続させる場合、プルダウン抵抗は抵抗アレイを使ってもいいかもしれない。

IMG_4667_20150614
Raspberry Pi内蔵プルダウン抵抗を使用する場合

コーディング

基本的には今までと同じでWiringPiを初期化してポート指定を行い、ポートの値を読み取るだけです。

ポート設定はこうなります。(#define BTN1 でポート番号を設定すること)

ピンの入出力モードを入力にして、Raspberry Pi内蔵のプルダウン抵抗を使用する場合のみプルアップ・ダウンコントロールを指定します。(心配なら使わない時もPUD_OFFを指定すると安心です。)

そしてボタンの状態の検出はこう

こいつを何らかの変数に代入するなり直接命令にいれこむなりして使う。例えばBTN_STATという変数に代入する場合は

となる。
これでBTN_STATに

が代入される。

実行結果

これを前回の液晶表示のプログラムと組み合わせてON/OFF状態と押した回数を表示してみた。

IMG_4667_20150614
ボタンオフの状態(内蔵プルダウン抵抗使用のときの写真)

IMG_4668_20150614
ボタンを押したら反応する。

以下に上の液晶表示のソースコードを貼り付けておく。

 

コメントを残す

メールアドレスが公開されることはありません。