Raspberry Piで秋月の無接点プッシュスイッチを使う
2013.11.03 · 636 words · 2 minute read
Web系のお仕事が山積みで、数ヶ月間更新出来ていませんでした;;
現在もガッツリ電子工作系に打ち込む時間が無いので、今回はベーシックな小ネタということで。
秋月電子で売ってる「無接点プッシュスイッチ(コード付)」を使う。
“機械的接点がない光学式の無接点プッシュスイッチです。デジタル出力型ICセンサ内蔵でドライブ回路に直結可能。” という説明の通り、ICが載ってるので出てる線はVCC、GND、OUTの3本です。
添付されていた参考資料によると、スイッチを押すとOUTがGNDに落ちるようになっていたので配線は以下。
これに加えてLEDを1個追加したので、図には入れてませんが、GPIO 17(pin11)から1kΩの抵抗を介してLED、GND(pin6)というのを入れています。
プログラム(Python with RPi.GPIO)はこんな感じで。
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(4,GPIO.IN)
GPIO.setup(17,GPIO.OUT)
while True:
if (GPIO.input(4)):
GPIO.output(17,GPIO.LOW)
else:
GPIO.output(17,GPIO.HIGH)
ifとelseの中身を変えてあげれば何にでも使えますね。
もし、ボタンを押したらコマンドを叩く様にしたい場合は、
import RPi.GPIO as GPIO
import subprocess
GPIO.setmode(GPIO.BCM)
GPIO.setup(4,GPIO.IN)
GPIO.setup(17,GPIO.OUT)
while True:
if (not GPIO.input(4)):
subprocess.call("shutdown -h now", shell=True)
みたいな感じにしてあげれば良いかも。
#このままだとボタンを押していると連続して叩いてしまうので、一回だけ実行するようにする必要ありです。
追記:pushCheck = Falseとか定義して、以下みたいな感じにすればOK
while True:
if (not GPIO.input(4) and not pushCheck):
pushCheck = True
print "Push!"
GPIO.output(17,GPIO.HIGH)
if (GPIO.input(4) and pushCheck):
pushCheck = False
GPIO.output(17,GPIO.LOW)
話は変わりますが、12/1に割と大きなネタがあるので、時期が近づいたら改めて告知します。