プッシュボタンスイッチは、プロセスの開始や停止、LEDの制御、イベントのトリガーなどのプロジェクトでよく使用されるシンプルで効果的な入力デバイスです。このチュートリアルでは、プッシュボタンスイッチをRaspberry PIに接続し、配線をセットアップし、Pythonスクリプトを作成してボタンのプレスを検出します。
あなたが必要とするもの
- Raspberry Pi (GPIOサポートを備えたモデル、例えばPI 3、PI 4)
- プッシュボタンスイッチ
- ブレッドボードとジャンパーワイヤ
- 抵抗器 (プルダウン用10kΩ)
- Pythonインストール ラズベリーパイに
- GPIOライブラリ Raspberry PiのGPIOピンを制御するため
ステップ1:プッシュボタンをRaspberryPiに配線する
プッシュボタンスイッチは、押されたときにGPIOピンを高(3.3V)状態に接続するか、押されないときに低(0V)に引っ張ることで機能します。プルダウン抵抗器を使用して、ボタンが押されていないときにGPIOピンが低く読み取られるようにします。
プッシュボタンを配線します
プッシュボタンピン | Raspberry Pi Gpio Pin |
---|---|
1つのピン | GPIO17(ピン11) |
他のピン | グラウンド(ピン6) |
1つのピン | 地面に対する10kΩの抵抗 |
これが配線のセットアップです:
- プッシュボタンの1つの端子を接続します GPIO17 (ピン11)。
- プッシュボタンの他の端子を接続します 地面 (ピン6)。
- 10kΩの抵抗器を接続します GPIO17 そして 地面 プルダウン抵抗として機能します。
これにより、ボタンが押されると、GPIO17が高く(3.3V)読み取られ、押されていない場合、GPIO17が抵抗によって低(0V)に引っ張られます。
ステップ2:PythonでGPIOピンを有効にします
-
まず、Raspberry Piのパッケージリストを更新します。
sudo apt update sudo apt upgrade -y
-
必要なPython GPIOライブラリをインストールします(まだインストールされていない場合):
sudo apt install python3-rpi.gpio
-
Pythonスクリプトにライブラリをインポートします。
import RPi.GPIO as GPIO import time
ステップ3:Pythonコードの書き込み
次に、ボタンが押された時期を検出して、それに応じてアクションを実行するPythonスクリプトを書きましょう。
Pythonコードの例
import RPi.GPIO as GPIO
import time
# Set up the GPIO mode and pin
GPIO.setmode(GPIO.BCM) # Use BCM numbering
button_pin = 17 # GPIO pin connected to the button
GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # Set up pin with pull-down resistor
# Function to detect button press
def button_callback(channel):
print("Button was pressed!")
# Set up an event on the button pin
GPIO.add_event_detect(button_pin, GPIO.RISING, callback=button_callback, bouncetime=300)
try:
print("Press the button...")
while True:
# Keep the program running to wait for button press
time.sleep(0.1)
except KeyboardInterrupt:
print("Program exited")
finally:
GPIO.cleanup() # Clean up GPIO to ensure a clean exit
コード説明:
- gpio.setmode(gpio.bcm):GPIOピン番号をBCM(BroadCom)モードに設定します。
- gpio.setup(button_pin、gpio.in、pull_up_down = gpio.pud_down):ボタンピンをプルダウン抵抗を使用して入力として構成します。つまり、押されないと低く読み取られます。
-
gpio.add_event_detect():GPIOピンの立ち上がりエッジ(ボタンプレス)を検出し、コールバック関数をトリガーします
button_callback
ボタンが押されたとき。 - time.sleep(0.1):スクリプトを実行し続けて、ボタンを押すのを待つことができます。
- gpio.cleanup():スクリプトが終了したときにGPIO設定をクリーンアップします。
ステップ4:ボタンのテスト
-
Pythonスクリプトを実行します:
python3 button.py
-
プッシュボタンを押して、「ボタンが押された」というメッセージを観察します。ターミナルで。
ステップ5:アプリケーション
プロジェクトでプッシュボタンを使用するためのいくつかのアイデアがあります。
- LEDを制御します:プッシュボタンを使用して、LEDのオンとオフを切り替えます。
- イベントをトリガーします:プロセスを開始または停止します(たとえば、モーターを起動したり、ファンをオンにしたり、スクリプトを開始したりします)。
- スマートドアベル:ボタンをドアベルとして使用して、電話に通知を送信します。
- ユーザー入力:プロジェクトの単純なユーザー入力を取得します(「はい/いいえ」の回答など)。
トラブルシューティング
-
検出されていないボタン:
- ボタンがプルダウン抵抗で正しく配線されていることを確認してください。
- コードでGPIO PINセットアップを再確認します。
-
GPIOエラー:
- GPIOライブラリが適切にインストールされ、スクリプトのピン番号が正しいことを確認してください。
-
ボタンバウンス:
- 複数のボタンが検出されていることに気付いた場合、デバウンス時間を追加できます(
bouncetime=300
スクリプトで)誤検出を避けるため。
- 複数のボタンが検出されていることに気付いた場合、デバウンス時間を追加できます(
結論
Raspberry PIでプッシュボタンスイッチを使用することは、プロジェクトに入力機能を追加する簡単な方法です。 LEDの切り替え、イベントのトリガー、または他のハードウェアとの対話など、この簡単なセットアップは、多くの興味深いアプリケーションの基盤となります。さまざまなGPIOピンを試し、設定をデバウンスして、ニーズに合わせてください!