PR

Raspberry Pi 5でボタン2つでLEDの明るさを調整する方法(PWM・gpiozero)

4. Raspberry Pi

Raspberry PiでLEDの明るさを調整する際、

・1つのボタンでは使いづらい
・明るさを上げる・下げるを分けたい
・より実用的な操作をしたい

と感じたことはありませんか?

本記事では、ボタンを2つ使用して、
LEDの明るさを「増やす」「減らす」操作を実装する方法を解説します。

スポンサーリンク

今回やること

・GPIO17 → LED(PWM出力)
・GPIO18 → ボタン①(明るくする)
・GPIO27 → ボタン②(暗くする)

ボタンごとに明るさを増減させます。

回路構成

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

■ ボタン①(明るくする)
GPIO18 → ボタン → GND

■ ボタン②(暗くする)
GPIO27 → ボタン → GND

※gpiozeroでは内部プルアップが有効なため、外部抵抗は不要です。

Pythonコード

ファイル名:two_button_pwm_led.py

from gpiozero import PWMLED, Button
from signal import pause

led = PWMLED(17)

button_up = Button(18)
button_down = Button(27)

brightness = 0.5  # 初期値
led.value = brightness

def increase():
    global brightness
    brightness += 0.1
    if brightness > 1:
        brightness = 1
    led.value = brightness
    print(f"明るさ: {brightness}")

def decrease():
    global brightness
    brightness -= 0.1
    if brightness < 0:
        brightness = 0
    led.value = brightness
    print(f"明るさ: {brightness}")

button_up.when_pressed = increase
button_down.when_pressed = decrease

pause()

コード解説

ボタンを2つ用意し、それぞれに役割を持たせています。

・button_up → 明るさを増やす
・button_down → 明るさを減らす

ボタンごとにbrightnessの値を増減しているため、
LEDの明るさを自由に調整できます。
※ボタンを押すたびに明るさが変化します。
連続で押すことで細かく調整できます。

※brightnessは0〜1の範囲で制御しています。

※初期値を0.5にすることで、
起動時にLEDが半分の明るさで点灯します。

動作確認

・上ボタン → LEDが明るくなる
・下ボタン → LEDが暗くなる

それぞれ正常に動作すれば成功です。

※Pythonでは小数(float)は2進数で管理されているため、
0.7999999のように表示される場合があります。

これは仕様によるもので、動作には問題ありません。

実行直後

上ボタンを押下

下ボタンを押下

なぜボタン2つで制御できるのか?

各ボタンの押下イベントを個別に処理しているため、
それぞれ異なる動作を割り当てることができます。

その結果、「増加」と「減少」を分けた制御が可能になります。

よくある失敗

・GPIO番号の間違い(18と27)
・brightnessが0未満や1を超えている
・pause()を書いていない

応用

・長押しで連続増減
・液晶表示と組み合わせる
・音量やモータ速度制御

関連記事

ボタン入力
PWM制御
長押し制御

まとめ

本記事では、ボタン2つを使用して、
LEDの明るさを増減する方法を解説しました。

・ボタンごとに役割を分ける
・PWMで明るさ制御
・実用的な操作が可能

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

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

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