児童書のおすすめ本60選

ラズパイ:タクトスイッチでPythonプログラムを動作させる

ラズパイ:タクトスイッチでPythonプログラムを動作させる

ラズパイにブレッドボードでタクトスイッチをつなげて、ボタンを押したらPythonプログラムやシェルスクリプトを実行するプログラムです。

上記写真では、4つのタクトスイッチをラズパイにつなげて使っています。
掲載したプログラムも4つのタクトスイッチに対応したプログラムとなっています。
一応配線の色に気を使ってみた。(つもり)

作ったきっかけと利用例

アマゾンでタクトスイッチを買ったら600円ほどで100個も入ってきたので、ブレッドボードと組み合わせてボタンを押したら時刻や天気予報などスピーカから流れたら面白い(ちょっとしたスマートスピーカ?!)と思い、ボタンクリックでPythonのプログラムやシェルスクリプトなどを呼び出すようにした。

利用例としては、現在時刻をしゃべるボタンを作ったり、天気予報をしゃべるボタンにしたりしている。

最近は、好きな曲をラズパイに保存してボタンを押したらランダムで曲を再生するように使っています

天気予報や曲再生などは以下の記事のプログラムを使っています。参考にどうぞ。

ラズパイ:AquesTalk Piを使ってtalkコマンドを作る

ラズパイ:Pythonで明日の天気をしゃべらせる

ラズパイ:フォルダ内の音楽をランダム再生する

配線について

GIPOのピン番号は、連番で指定しています。(GPIO.BOARDで指定)

ラズパイ:タクトスイッチでPythonプログラムを動作させる
上記写真では、右から

ボタン名プログラム上の変数
水色ボタン1pin1/button1
ボタン2pin2/button2
黄色ボタン3pin3/button3
ボタン4pin4/button4

といった感じで配線しています。

アースについて
アース(GND)は、39番を使用しています。
上記写真の緑と黄色のジャンパーワイヤ(線)はすべて39番につながっている形になります。

ラズパイ本体はこんな感じ。
ラズパイ:タクトスイッチでPythonプログラムを動作させる

プログラム

33,37,41,45行目のコマンド文字列はあくまで例ですので、ご自分の環境にあわせて使ってください。

例えば /home/pi にある hoge.py というプログラムを実行したいなら

cmd = “sudo python3 /home/pi/hoge.py”

とすればOKです。

また、 /home/pi にあるhoge.mp3という曲を再生したいなら、

cmd = “omxplayer -o local /home/pi/hoge.mp3”

という感じです。

言語:Python3

tactrun.py

# -*- coding: utf-8 -*-

import RPi.GPIO as GPIO
import time
import sys, os

# ボタンを押したらプログラムを呼び出す
if __name__ == "__main__":
	# GPIOピン番号設定
	pin1 = 15
	pin2 = 21
	pin3 = 29
	pin4 = 35

	GPIO.setmode(GPIO.BOARD)
	GPIO.setup(pin1, GPIO.IN, pull_up_down = GPIO.PUD_UP)
	GPIO.setup(pin2, GPIO.IN, pull_up_down = GPIO.PUD_UP)
	GPIO.setup(pin3, GPIO.IN, pull_up_down = GPIO.PUD_UP)
	GPIO.setup(pin4, GPIO.IN, pull_up_down = GPIO.PUD_UP)

	# ボタンクリック待機中
	print("ボタン待機中...")
	
	while True:
		button1 = GPIO.input(pin1)
		button2 = GPIO.input(pin2)
		button3 = GPIO.input(pin3)
		button4 = GPIO.input(pin4)

		cmd = ""
		if button1 == False:
			# ボタン1の処理
			cmd = "sudo python3 /home/pi/button1.py"	# 例です

		elif button2 == False:
			# ボタン2の処理
			cmd = "sudo python3 /home/pi/button2.py"	# 例です
			
		elif button3 == False:
			# ボタン3の処理
			cmd = "sudo python3 /home/pi/button3.py"	# 例です

		elif button4 == False:
			# ボタン4の処理
			cmd = "sudo python3 /home/pi/button4.py"	# 例です

		# 実行
		if cmd != "":
			ret = os.popen(cmd).readline().strip()
			print(ret)
			time.sleep(1)	# ボタンを押した後のチャタリング防止のため

		time.sleep(0.1)

	GPIO.cleanup()

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA