ラズベリーパイでボタン(タクトスイッチ)の使い方、押した時にプログラムを実行する方法を説明します。

 

ボタン(タクトスイッチ)とは

足が4本あるとても小さなボタンです。

見た目にはわかりませんが、内部に1回路のスイッチがあります。ボタンを押しているときだけこのスイッチがOnになるしくみです。

足の間隔は、1-2、3-4間がブレッドボードの穴4つぶんで、1-3、2-4間が穴3つ分あります。

 

ラズベリーパイとの接続

ラズベリーパイでボタンを使用する時は色々なつなぎ方がありますが、片方をGPIOに、片方をGNDにつなぐ方法が1番簡単です。

この場合、ラズベリーパイのプログラムでGPIOをプルアップしておき、ボタンが押されるとGNDとつながってGPIOが0Vになることを利用して、ボタン押しを検出します。

 

電子回路の作成

ラズベリーパイでボタンを使用する際、電子回路は以下のようになります。GPIOとGNDはお好きなところを使用できます。

 

サンプルプログラム

ラズベリーパイでボタン押しを検出するプログラムは以下を使用できます。

pushbutton.py

import RPi.GPIO as GPIO               # 必要なモジュールをインポートします

button_pin = 12                       # GPIO 12にボタンをつなぎます

def button_callback(channel):         # ボタンが押された時にやりたいことを
    print("Button was pushed!")       # この行から書いておきます

GPIO.setmode(GPIO.BCM)                # BCMモードでGPIOを使用します

# GPIO 12を入力モードにし、プルアップします
GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

# ボタンが押されてGPIO 12がGNDになることを検出し、button_callbackを起動します
# bouncetimeはボタン押しの検出間隔です
GPIO.add_event_detect(BUTTON, GPIO.FALLING, callback=button_callback, bouncetime=200)

# 画面に文字を表示し、待機に入ります
input("Press button to count, or Enter to quit\n")

# キーボードの何かのキーが押されると実行します
GPIO.cleanup()
print("Bye!")

実行してボタンを押すと、Button was pushed!  と表示されます。終了するときはキーボードの何かのキーを押すとBye!と表示されてプログラムが終了します。

 

画面にButton was pushed! と表示するのではなく、なにか好きな処理をさせたい場合は、button_callbackの中に処理を書けばOKです。

 

おわりに

いかがだったでしょうか? ラズベリーパイでボタンを押した時になにかを実行したいというケースは多くあると思います。カメラと組合わたりすると面白そうですね。ぜひ活用してくださいね😊

関連記事:使い方