注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiast Community on Facebookへようこそ!他の愛好家と一緒に、Raspberry Pi、Arduino、ESP32の世界により深く入り込みましょう。

参加する理由

  • 専門家サポート: 購入後の問題や技術的な課題を、コミュニティと私たちのチームの助けを借りて解決します。

  • 学習と共有: ヒントやチュートリアルを交換して、スキルを向上させましょう。

  • 限定プレビュー: 新製品の発表や先行プレビューに早期アクセスできます。

  • 特別割引: 最新製品を特別割引でお楽しみいただけます。

  • 季節限定キャンペーンとプレゼント: プレゼント企画やホリデーキャンペーンに参加しましょう。

👉 一緒に発見し、創造する準備はできましたか? [こちら] をクリックして、今すぐ参加しましょう!

1.2 RGB LED

はじめに

このプロジェクトでは、Raspberry Pi と GPIO プログラミングを使って RGB LED を制御し、さまざまな色を表示する方法を学びます。RGB LED は、赤・緑・青の光をそれぞれ異なる強さで組み合わせることで、多彩な色を表現できる便利な電子部品です。


必要なもの

このプロジェクトを完成させるために、次の部品を用意してください。

部品

購入リンク

ブレッドボード

購入

ジャンパーワイヤー

購入

抵抗器

購入

RGB LED

購入

Fusion HAT+

-

Raspberry Pi

-


回路図

RGB LED の R、G、B ピンをそれぞれ電流制限用の抵抗に接続し、その抵抗を PWM0、PWM1、PWM2 に接続します。LED の最も長いピン(GND)は Raspberry Pi の GND ピンに接続します。3つのピンに異なる PWM 値を与えることで、さまざまな色を生成できます。

../_images/1.1.2_sch.png

配線図

以下の手順に従って回路を組み立ててください。

  1. RGB LED をブレッドボードに配置します。

  2. LED の赤・緑・青のピンを、それぞれ抵抗を介して P0、P1、P2 に接続します。

  3. LED の最も長いピン(GND)を Raspberry Pi の GND に接続します。

../_images/1.1.2_bb.png

サンプルプログラムの実行

このチュートリアルで使用するすべてのサンプルコードは、 ai-lab-kit ディレクトリに用意されています。 次の手順に従ってサンプルを実行してください。

cd ~/ai-lab-kit/python/
sudo python3 1.2_RGBLED.py

プログラムを実行すると、RGB LED は赤 → 緑 → 紫の順にそれぞれ 1 秒ずつ点灯し、最後に消灯します。Ctrl + C を押すと LED も消灯します。


コード

次の Python コードでは、赤・緑・青の PWM 値を変化させることで、RGB LED の色を順番に切り替えます。

#!/usr/bin/env python3
from fusion_hat.modules import RGB_LED
from fusion_hat.pwm import PWM
from time import sleep

# Initialize an RGB LED. Connect the red component to P0, green to P1, and blue to P2.
rgb_led = RGB_LED(PWM(0), PWM(1), PWM(2), common=RGB_LED.CATHODE)

try:
   # Set the RGB LED to red.
   rgb_led.color((255, 0, 0))
   sleep(1)

   # Set the RGB LED to green.
   rgb_led.color("#00FF22")
   sleep(1)

   # Set the RGB LED to purple.
   rgb_led.color(0xFF00FF)
   sleep(1)

   # Set the RGB LED to black.
   rgb_led.color(0x000000)

except KeyboardInterrupt:
   # Handle a KeyboardInterrupt (Ctrl+C) to exit.
   rgb_led.color(0x000000)
   pass

このスクリプトは、Fusion Hat ライブラリを使って RGB LED を制御する方法を示しています。RGB LED を特定の PWM ピンで初期化し、異なる色を順番に設定します。


コードの理解

RGB LED を接続した対応デバイス上でスクリプトを実行すると、LED は赤 → 緑 → 紫の順に点灯し、その後消灯します。

  1. 依存モジュールのインポート

    from fusion_hat.modules import RGB_LED
    from fusion_hat.pwm import PWM
    from time import sleep
    

    必要なモジュールを読み込みます。 fusion_hat ライブラリの RGB_LEDPWM は RGB LED の制御に使用され、 sleep は時間待ちに使用されます。

  2. RGB LED の初期化

    rgb_led = RGB_LED(PWM(0), PWM(1), PWM(2), common=RGB_LED.CATHODE)
    

    RGB LED を初期化し、赤・緑・青の各チャンネルをそれぞれ PWM ピン P0P1P2 に接続します。この LED は 共通カソード(Common Cathode) タイプです。

  3. 色を順番に設定する

    rgb_led.color((255, 0, 0))  # Red
    sleep(1)
    
    rgb_led.color("#00FF22")  # Green
    sleep(1)
    
    rgb_led.color(0xFF00FF)  # Purple
    sleep(1)
    

    スクリプトでは、さまざまな形式で RGB LED の色を指定できます。

    • (255, 0, 0):RGB タプル形式の赤

    • "#00FF22":16進文字列形式の緑系カラー

    • 0xFF00FF:紫を表す16進整数

  4. LED を消灯する

    rgb_led.color(0x000000)
    

    LED の色を黒( 0x000000 )に設定することで、LED を消灯します。

  5. 割り込み処理

    except KeyboardInterrupt:
       rgb_led.color(0x000000)
       pass
    

    ユーザーが Ctrl+C を押してスクリプトを中断した場合、この例外を処理し、LED を消灯してから終了します。


トラブルシューティング

  1. LED が点灯しない

    • 原因:配線ミス、または GPIO ピンの接続間違い。

    • 対処方法:RGB LED の赤・緑・青ピンが正しいピンに接続されているか、また LED の共通カソードまたは共通アノードが正しく接続されているか確認してください。

  2. 色がちらつく、または不安定

    • 原因:電源が不安定、または抵抗の使用が不適切。

    • 対処方法:適切な抵抗を使用し、安定した電源を確保してください。

  3. GPIO の設定が正しくない


発展アイデア

  1. カスタムカラーシーケンス

    COLORS リストにさらに多くの色を追加し、たとえば (125, 50, 200) のような柔らかい色調も試してみましょう。

  2. ユーザー入力による色指定

    ユーザーが RGB 値を入力して LED の色を設定できるようにします。

    while True:
        user_color = input("Enter RGB values (e.g., 125,0,0): ")
        r, g, b = map(int, user_color.split(","))
        rgb_led.color = (r, g, b)
    
  3. ランダムカラー表示

    ランダムな色を生成し、動的で予測できないライト表示を作ります。

    from random import randint
    while True:
       rgb_led.color = (randint(1,255) , randint(1,255) , randint(1,255) )
       sleep(1)
    

まとめ

このガイドを通して、Raspberry Pi と Python を使って RGB LED を制御する方法を学びました。このプロジェクトでは、PWM の基本と色の合成を理解できます。これらの知識は、より高度な照明効果の作成やインタラクティブな電子プロジェクトの基礎として活用できます。