【Raspberry Pi 2 Model B】初めての電子工作 タクトスイッチに挑戦


概要

別の記事で作ったリモートボタンが地味に便利で、某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が表示されれば成功です。

もっとボタンが欲しい

ということで4つ接続しました。

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

これで、4つの処理を割り当てることができそうです。
携帯性は失われましたが・・・