Raspberry Pi タクトスイッチでポチッとな 〜LEDをON/OFF〜
前回は、最初の一歩として Lチカ を作成しました。
今回は、入力に タクトスイッチ を使って、LEDのON/OFFにチャレンジします。
- スイッチを押したらLEDが点灯 (ON)
- スイッチを離したらLEDが消灯 (OFF)
用意したもの
- ブレッドボード
- タクトスイッチ
- ジャンパワイヤ (オス-メス) 4本
- ジャンパワイヤ (U字型単線タイプ) 2本
- LED 1本
- 抵抗 (200Ω)
タクトスイッチは、押すと「カチッ」というクリック感があり、それが心地よく、ついつい何度も押してしまいます。
カバンに入れて持ち歩き、暇な時に連打するといいかもしれません。
プルダウン抵抗とプルアップ抵抗
タクトスイッチを使う場合、入力値が不定にならないように、プルダウン抵抗かプルアップ抵抗を用いる必要があります。
- プルダウン抵抗
- スイッチOFF: LOW (0V)
- スイッチON: HIGH (3.3V)
- プルアップ抵抗
- スイッチOFF: HIGH (3.3V)
- スイッチON: LOW (0V)
ブレッドボード上に大きめの抵抗を配置することで実現できますが、Raspberry Pi の場合、本体側にプルダウン抵抗・プルアップ抵抗が用意されています。
今回は、Raspberry Pi 本体のプルダウン抵抗を利用します。 その分、回路図がシンプルになります。
回路図
3.3V と GPIO24 の間にタクトスイッチを接続します。
ブレッドボード
前回より少し複雑になっています。
今回は横ラインに電源用とGND用に利用しました。
プログラム
import RPi.GPIO as GPIO import time PIN_IN = 24 PIN_OUT = 25 GPIO.setmode(GPIO.BCM) GPIO.setup(PIN_IN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(PIN_OUT, GPIO.OUT) try: while True: flag = GPIO.input(PIN_IN) == GPIO.HIGH GPIO.output(PIN_OUT, flag) time.sleep(0.01) except KeyboardInterrupt: pass finally: GPIO.cleanup()
入力設定
入力時にプルダウン抵抗を利用するため、setup関数にキーワード引数 pull_up_down
を指定します。
ループ内
GPIO24 の入力値に電流が流れてるかどうかをフラグにして、GPIO25 の出力を制御します。
CTRL+C
で処理を中断できます。
ラズパイで確認
スイッチがOFFの状態です。LEDはOFFの状態です。
ポチッとな!!
LEDが光りました。 まるで天津飯の太陽拳のようです。
参考
- Raspberry Pi公式
- カラー図解-Raspberry-Piで学ぶ電子工作-作って動かしてしくみがわかる
- 5章 タクトスイッチによる入力