Raspberry Pi – タクトスイッチでLED制御

投稿者: | 2019年2月18日

引き続きコチラの書籍で学習継続中。今日は第5章に記載のタクトスイッチのON/OFFでLED点灯制御をしてみます。

[amazonjs asin=”4062579774″ locale=”JP” title=”カラー図解 最新 Raspberry Piで学ぶ電子工作 作って動かしてしくみがわかる (ブルーバックス)”]

 

書籍のまんまですが、回路図はこのようになります。

因みに回路図の描画は「水魚堂の回路図エディタ」BSch3Vを使用しました。

 

パーツを接続し回路図を実現したところ。

 

Raspberry Piの制御コードはこうなります。書籍と異なるのは、タクトスイッチをオンにするとLEDがオフになるところ。

import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT)
GPIO.setup(24, GPIO.IN)

try:
	while True:
		if GPIO.input(24) == GPIO.HIGH:
			GPIO.output(25, GPIO.LOW)
		else:
			GPIO.output(25, GPIO.HIGH)
		sleep(0.01)
	
except KeyboardInterrupt:
	pass

GPIO.cleanup()

 

動かしてみました。タクトスイッチを押す度にLEDのON/OFFが切り替わります。

 

書籍にも記載していますが、プルダウン抵抗は電流を安定させるために必要なもの。外してしまうとこのように不安定な挙動になります。

 

そこでRaspberry Piに備わっている内部抵抗を有効にしてみます。

こちらもほぼ書籍のまんまですが、内部プルダウン抵抗を有効にするソースコードは次のようになります。

import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT)
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

try:
	while True:
		if GPIO.input(24) == GPIO.HIGH:
			GPIO.output(25, GPIO.LOW)
		else:
			GPIO.output(25, GPIO.HIGH)
		sleep(0.01)
	
except KeyboardInterrupt:
	pass

GPIO.cleanup()

 

回路はこのように。先ほどは繋がれていたプルダウン抵抗が外れていますが、無事動作するでしょうか。

 

無事動作しました。安定してLEDが制御できていることがわかります。