こんにちは!
教育委員のmichiyamaです!
前回、電子工作の初歩から始め、電子工作は基礎知識がなかなか必要という事がわかりました。
今回も基礎を進めていきたいと思います!
ちなみに電子工作の初歩を載せている本を(弊社の書籍購入制度を使って)入手しましたので、こちらの情報に沿って進めていきます!
(ちなみに言語よりも電子部品の比率がだいぶ高いですね。)
・今回のテーマは「スイッチ」
今回は「スイッチ」です。
当たり前すぎて大きなテーマとしてはどうかと、本を読むまで思っていたのですが、
なかなか電子回路で知っておくべきと思われることが多かったので、こちらでまずは基本をお伝え出来たらと思います!
・スイッチを使ってみる
今回使用するスイッチですがこちらになります。
2端子スイッチというやつです。
これはスイッチを押すと通電するというものになっています。
例えば前回のLピカの回路に組み込むと
こんな感じで、ボタンを押すとLDEが発光し、押していないと消え・・・?
ん、ラズパイじゃなくても電池につなげれば・・・
これただの物理的な制御ですね・・・。
まぁ、こういった使い方も間違ってないんですが、せっかくのラズパイ
「スイッチの状態を取得し、出力を制御」
を行ってみましょう!
・スイッチの状態を取得し、出力を制御する。
まずはスイッチの回路から
このような回路になります。
1番端子の3.3V電源から入力にする7番端子(GPIO4)につなげる形になっています。
スイッチを入力すると電流が流れるわけですね。
先ほどのように直通ではだめなのか、とも考えられますが、その状態だと電圧が不安定になり、スイッチを触っていないのにON/OFFを取得してしまうことがあるようです。
上の回路のように6番端子のGND(アース)を通すと電流が0Aになりオームの法則により電圧も0Vとなるので、安定するとのことです。
(抵抗を入れるのは今回も強い電流でラズパイが損傷しないため)
こちらのスイッチの状態はプルダウンと呼ばれています。
これを取得するコードはこのようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import wiringpi as pi import time SW_PIN = 4 #GPIOを初期化し、指定したGPIOを入力待ち状態にする pi.wiringPiSetupGpio() pi.pinMode( SW_PIN, pi.INPUT ) while True: if ( pi.digitalRead( SW_PIN ) == pi.HIGH ): print ("Switch is ON") else: print ("Switch is OFF") time.sleep( 1 ) |
ラズパイの入力用の端子を指定し、1秒ごとに状態を読み取るというものです。
例えば、この判定式の間に前回のLEDを光らせる制御を組み込めばラズパイを使ったLED制御ができるというわけですね!
ちなみに、
このような回路にすると状態が逆転し、スイッチを押すとGNDにつながり電流・電圧が0になりOFF、離すとONとなります。
こちらのスイッチの状態はプルアップと呼ばれています。
さて、では毎回スイッチを使う場合、この回路を組む必要があるのか?
実はラズパイ内部にこの回路が組み込まれており、端子につないで指定すれば使えます。
先ほどのスイッチ判定の前に端子を指定してプルダウンとして使うコードです。
(GPIO4である7番端子で入力を見る場合)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import wiringpi as pi import time SW_PIN = 4 pi.wiringPiSetupGpio() pi.pinMode( SW_PIN, pi.INPUT ) #指定のGPIOをプルダウン抵抗として使用する。 pi.pullUpDnControl( SW_PIN, pi.PUD_DOWN ) ''' 以下で指定のGPIOをプルアップ抵抗として使用 pi.pullUpDnControl( SW_PIN, pi.PUD_UP ) 以下で指定のGPIOのプルアップ・プルダウンを無効 pi.pullUpDnControl( SW_PIN, pi.PUD_OFF ) ''' while True: if ( pi.digitalRead( SW_PIN ) == pi.HIGH ): print ("Switch is ON") else: print ("Switch is OFF") time.sleep( 1 ) |
そうすると、回路図はこんな感じ・・・
・・・うん、だいぶあっさりしましたね。
ブレッドボードを使っているうちは入出力を多くつける場合、だいぶ助かることになるかと思います。
ちなみに3番端子と5番端子(GPIO2、GPIO3)はプルアップに固定された状態で、変更ができないとのことです。
・さて次回は
今回は入力値の基本、そのスイッチのさらに基本をお伝えしました。
次回も冒頭でお伝えしました書籍より得たところからお伝えしようと思います。
予定としてはA/Dコンバータあたりを扱えればと思いますが、
もしくは、これまでお伝えしたLEDとスイッチで何か作ってみるというのも面白いかと思っています。
(A/Dコンバータ難しそうだしなぁ)
今回も最後までお付き合いいただき、ありがとうございました!