タクトスイッチで点灯する回路とプログラムを作る-農家のIoT入門(4)

農家のIoT入門、第4回です。

前回学んだプルアップ・プルダウン抵抗による「入力」を使って、スイッチを押している間LEDが光る電子工作を行います。

本記事の目的

・「入力」を使った回路を考える
・Pythonで入力をキーとしたLED点灯プログラムを組む
・タクトスイッチを使ったLED点灯回路を電子工作する

「入力」を使った回路を考える

今回は、人間が介入するプログラムを考えます。

「スイッチを押す」という人間の行動を、プログラム側が検知して、その結果なにかをさせる・・という感じですね。

今回も代表例である、「スイッチを押している間」→「LEDが点灯する」という回路を考えてみようと思います。

まず、家の電灯なんかもスイッチを押したら光る仕組みですが、これはプログラムとは関係ないです。

あえてRaspberryPiを使うとしても、下の回路のようになるだけです。

ただのスイッチ付きLED回路

プログラミングしなくても、常時3.3Vが出ているピンとGNDピンを使えば、動作します。

そうではなく、「スイッチが押されている」という状態をプログラミングで検知して、その結果「LEDを点灯させる」というプログラミングを走らせる。
そんな感じです。

スイッチが押されている事を検知する

では、「スイッチが押されている」を検知する回路を考えてみましょう。

GPIO24ピンを「入力」に設定し、スイッチを押している間は3.3Vが入力される回路がこれです。

プルダウン抵抗を使った、タクトスイッチによる入力回路

前回のプルダウン・プルアップ抵抗講座で学んだ内容をそのまま活かし、プルダウン抵抗を使っています。

このプルダウン抵抗が入っていないと、ショートするので気をつけましょう。

このスイッチがオンしている間、GPIO24ピンは3.3Vを検知して、"1″を返します。

逆にオフの間は0Vを検知し、"0″を返します。

他のピンの結果を拾って、出力を変える

続いて、下の回路を組みます。

GPIO25ピンを出力にして、GPIO24ピンが"1″の場合は3.3Vを出力し、"0″の場合は0Vにする。

この2つを組み合わせれば、スイッチを押している間だけ光る回路の完成です。

入力の回路と、出力の回路を分けることで、様々な事に対応出来るようになるわけです。

Pythonで入力をキーとしたLED点灯プログラムを組む

では、さきほどの回路を動かす為のプログラミングを作りましょう。

2種類の回路を組みましたが、プログラムはひとつにまとめます。

GPIO24と25をそれぞれ入力と出力に指定し、そこから各動作を組んでいきます。

  1. import RPi.GPIO as GPIO
  2. from time import sleep
  3. GPIO.setmode(GPIO.BCM)
  4. GPIO.setup(24,GPIO.IN)
  5. GPIO.setup(25,GPIO.OUT)
  6. try:
  7.     while True:
  8.         if GPIO.input(24) == GPIO.HIGH:
  9.             GPIO.output(25,GPIO.HIGH)
  10.         else:
  11.             GPIO.output(25,GPIO.LOW)
  12.         sleep(0.01)
  13. except KeyboardInterrupt:
  14.     pass
  15. GPIO.cleanup()

10行目:もし24ピンがHIGH(3.3Vの入力を検知して、"1″を返している状態)ならば
11行目:25ピンの出力を3.3Vにしなさい(LED点灯)
12行目:10行目以外の条件ならば
13行目: 25ピンの出力を0Vにしなさい(LED消灯)

こんなふうになります。

タクトスイッチを使ったLED点灯回路を電子工作する

最後に、ブレッドボードを使って回路を実際に組立てます。

先に書いた回路図の通り組立てたのがこちら。

オン・オフは、タクトスイッチを使っています。

4本のピンが出ており、この写真での上下のピンは常に繋がっている状態です。

ですので、ブレッドボード上のこの位置に刺さないと、上下のピンでショートしてしまいます。

そして、タクトスイッチを押すと、左右のピンが繋がり、GPIO24へ3.3Vが入力されるという仕組みです。

タクトスイッチを使ったLED点灯回路

実際の動作状況がこちら。

押している間だけ、LEDが光りますね。

 

今回はプログラム上の「入力」を学びました。

これで、様々な事をRaspberryPiに命令することができるようになります。

初歩の初歩は、だいたいこれでつかめました。

次からは、もう少し実用的な事をやってみようと思っています。