PR

Raspberry Pi 5でボタン入力してLEDを制御する方法(GPIO17/18・gpiozero)

4. Raspberry Pi

Raspberry Piでボタン入力とLED制御を組み合わせたいけれど、

・ボタンの配線方法が分からない
・押したときにLEDを点灯させたい
・GPIOの設定方法が知りたい

と悩んでいませんか?

本記事では、GPIO17に接続したLEDと、
GPIO18に接続したボタンを使って、
ボタン操作でLEDを制御する方法を解説します。

スポンサーリンク

今回やること

・GPIO17 → LED(出力)
・GPIO18 → ボタン(入力)

ボタンを押している間だけLEDが点灯する回路を作成します。

準備するもの

・Raspberry Pi 5
・ブレッドボード
・LED
・抵抗(200Ω)
・タクトスイッチ(ボタン)
・ジャンパーワイヤー

配線方法

以下のように接続します。

■ LED(GPIO17)
GPIO17 → 抵抗 → LED(+)
LED(−)→ GND

■ ボタン(GPIO18)
GPIO18 → ボタン → GND

GPIO17は物理ピン11、GPIO18は物理ピン12に対応しています。

Pythonコード

from gpiozero import LED, Button
from signal import pause

# GPIO17にLED
led = LED(17)

# GPIO18にボタン(プルアップ)
button = Button(18)

# ボタンが押されたらLED ON
button.when_pressed = led.on

# ボタンが離されたらLED OFF
button.when_released = led.off

pause()

nano button_led.py

コードを書いたら、

Ctrl + O → 保存
Ctrl + X → 終了

button = Button(18)で、
内部プルアップが効いている状態になります。

※gpiozeroでは内部プルアップ抵抗が有効になっているため、
ボタンが押されるとLOW、離すとHIGHになります。

動作確認

ターミナルで以下を実行します。

sudo python3 button_led.py

プログラムを実行すると、

・ボタンを押す → LED点灯
・ボタンを離す → LED消灯

となれば成功です。

なぜボタンでLEDが制御できるのか?

ボタンが押されるとGPIO18の状態が変化し、
プログラムがその変化を検知します。

gpiozeroでは以下のようにイベントとして扱われます。

・押された → when_pressed
・離された → when_released

これにより、ボタン操作に応じてLEDを制御できます。

よくある失敗

・GPIO番号の間違い(17と18の逆)
・GNDに接続していない
・LEDの向きが逆
・pause()を書いていないためすぐ終了する

応用

以下のような応用が可能です。

・ボタンを押したらトグル(ON/OFF切り替え)
・長押し検出
・複数ボタン制御

関連記事

LED点灯方法
GPIOの基本

まとめ

本記事では、ボタン入力でLEDを制御する方法を解説しました。

・GPIO17:LED(出力)
・GPIO18:ボタン(入力)
・gpiozeroで簡単に制御可能

入力と出力を組み合わせることで、
より実践的な回路が作れるようになります。

こちらの記事で使用しているRaspberry Pi 5 はこちら
 ▶ Amazonで詳細を見る

本記事では、こちらの電子工作キットを使用しています。
 ▶ OSOYOO(オソヨー) Raspberry Pi 用 学ぶ電子工作キット(Amazonへのリンク)

タイトルとURLをコピーしました