##概要
別の記事で作ったリモートボタンが地味に便利で、某Dashとかいろいろ試している最中であり、せっかくラズパイなんだから、王道の物理ボタンにもチャレンジしてみようと思ったのがきっかけです。
##参考にしたサイト
##前提条件
- モデル : Raspberry Pi 3 Model B
- OS : Raspbian Stretch
$ uname -a
Linux raspberrypi 4.14.32-v7+ #1106 SMP Wed Apr 4 18:19:23 BST 2018 armv7l GNU/Linux
##構成
電子工作はほぼ初めてなので単純構成。スイッチと3.3V、GPIO14を接続しただけです。中学?高校?くらいの知識を思い出して理解しました。プルダウン抵抗がない?気にしない!
##動作確認
Pythonで動作確認します。
button_test.py
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
try:
while True:
if GPIO.input(14) == GPIO.HIGH:
print("14")
time.sleep(0.1)
except KeyboardInterrupt:
pass
GPIO.cleanup()
Raspberry Piには内部にプルダウン抵抗が用意されていて、通常
GPIO.setup(14, GPIO.IN) と書くところを
GPIO.setup(14, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) とすることで有効になる模様。
では実行。停止はCTRL+Cで。
$ python button_test.py
14
14
14
スイッチを押したとき、14が表示されれば成功です。
button_test.py
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(15, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(24, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
try:
while True:
if GPIO.input(14) == GPIO.HIGH:
print("14")
elif GPIO.input(15) == GPIO.HIGH:
print("15")
elif GPIO.input(23) == GPIO.HIGH:
print("23")
elif GPIO.input(24) == GPIO.HIGH:
print("24")
time.sleep(0.1)
except KeyboardInterrupt:
pass
GPIO.cleanup()
$ python button_test.py
14
15
23
24