ラズパイとタクトスイッチで押した時にLEDを点灯、離した時に消灯する回路を試した
Contents
タクトスイッチによるLEDの点灯
前回はラズパイ(Raspberry Pi 3 B+)で0.5秒間隔のLED点滅(Lチカ)の記事を書いた。
自分の電子工作の始まりは金丸隆志さんの「Raspberry Piで学ぶ電子工作」の書籍を参考にさせて貰ったのだが今回はその書籍に載っているタクトスイッチによるLEDの点灯の切り替えを試してみる。
やりたい事はタクトスイッチを押すとLEDが点灯して、離すとLEDが消灯する回路とPythonのプログラムだ。
前回よりちょっと複雑になっている。
試した環境
環境は以下の通り。
本体 | Raspberry Pi 3 B+ |
OS | Raspbian Version:June 2019 |
必要な機器
必要な機器は基本的には前回の記事を参照して欲しいのだが今回新たに必要なものとしては以下がある。
タクトスイッチ
ボタンを押すことにより切り替わるタクトスイッチ。
抵抗(10KΩ)
10kΩの抵抗。
尚、1点ずつ購入する事も出来るが自分は上記書籍で紹介されていた秋月電子通商の「Raspberry Piで学ぶ電子工作 パーツセット」で揃えた。
回路図
ラズパイとタクトスイッチによるLEDの点灯制御の回路図は以下の通り。
補足説明
LEDはGPIO4(3.3V)→抵抗(330Ω)→LEDアノード→LEDカソード→GNDとなっている。
プログラムでGPIO4のoutputをLOW、HIGHと切り替えることによりLEDの点灯を制御する。
一方タクトスイッチの方は3.3V→タクトスイッチ→GPIO17への接続とタクトスイッチ→10KΩの抵抗→GNDと分かれている。
タクトスイッチは上記図の赤文字の1、2は接続されており3は接続されていないが、スイッチを押すと3が接続される構造になっている。
タクトスイッチが押されてGPIO17(input)がHIGHになった時にGPIO4(output)をHIGHにすればLEDが点灯する仕組みだ。
タクトスイッチとGNDとの間に10KΩの抵抗があるがこれはプルダウン抵抗と呼ばれてスイッチが押されていない時にGPIO17を安定して0Vにする為と、スイッチが押された時にGNDに大電流が流れない様にする為の抵抗である。
十分大きな抵抗であれば10KΩで無くても良いのだがこれが無くて、GNDに大電流が流れるとラズパイがシャットダウンしてしまうので注意が必要だ。
最初、自分は上記の1番右の接続で良いのでは?と思っていたのだがどうやらこの接続だとスイッチがOFFの時にGPIOが安定してLOWにならない(LOWとHIGHを繰り返してしまう)
その為、GNDに接続する必要があるのだが、そのまま繋ぐと今度はスイッチがONの時に大電流がGNDに流れてしまうので10kΩの抵抗を挟むという事らしい。
実はラズパイにはプルダウン(プルアップ)抵抗が内蔵されているので実際に接続をしなくてもPythonのプログラムで指定する事もできるのだが、それは次回以降の記事とする。
プログラム
ソースコード
プログラムは以下の通り。
# -*- coding: utf-8 -*-
"""
Created on Sun Aug 2 08:14:04 2020
@author: Souichirou Kikuchi
"""
import RPi.GPIO as GPIO
from time import sleep
LED_GPIO = 4 # LEDに接続するGPIO番号
TACT_GPIO = 17 # Tack Switchに接続するGPIO番号
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_GPIO, GPIO.OUT)
GPIO.setup(TACT_GPIO, GPIO.IN)
try:
print('--- start program ---')
while True:
if GPIO.input(TACT_GPIO) == GPIO.HIGH:
GPIO.output(LED_GPIO, GPIO.HIGH)
else:
GPIO.output(LED_GPIO, GPIO.LOW)
sleep(0.01)
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()
print('--- stop program ---')
補足説明
11、12行目でLEDとタクトスイッチに接続するGPIO番号を定数として定義している。
プログラム中で複数箇所に出現するので定数にしておけば接続するピンを変更した場合、この一箇所を変更するだけで良い。
21行目のif文でタクトスイッチからのinputのGPIOの状態を確認している。
HIGHならLEDに接続しているGPIOのoutputに対してHIGH、そうでなければLOWを出力する。
プログラムの実行
ラズパイにプログラムをコピーしてメニューからThonny IDEを起動して「Load」ボタンで対象のプログラム(led-tact-switch.py)を開いたら「Run」ボタンで実行する。
タクトスイッチを押しているときだけLEDが点灯する装置が出来た。
Ctrl+Cでプログラムは終了する。
以上で今回の記事は終了とする。
この記事が何処かで誰かの役に立つことを願っている。
尚、当記事中の商品へのリンクはAmazonアソシエイトへのリンクが含まれています。Amazonのアソシエイトとして、当メディアは適格販売により収入を得ていますのでご了承ください。
最近のコメント