現在もガッツリ電子工作系に打ち込む時間が無いので、今回はベーシックな小ネタということで。
秋月電子で売ってる「無接点プッシュスイッチ(コード付)」を使う。
"機械的接点がない光学式の無接点プッシュスイッチです。デジタル出力型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に割と大きなネタがあるので、時期が近づいたら改めて告知します。