注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Communityへようこそ!Facebook上で、仲間と一緒にRaspberry Pi、Arduino、ESP32をさらに深く探求しましょう。

なぜ参加するのか?

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

  • 学びと共有:スキルを向上させるためのヒントやチュートリアルを交換。

  • 限定プレビュー:新製品発表や予告編に早期アクセス。

  • 特別割引:最新製品の特別割引を楽しむ。

  • フェスティブプロモーションとプレゼント:プレゼントやホリデープロモーションに参加。

👉 私たちと一緒に探索と創造を始める準備はできましたか?[ここ]をクリックして、今すぐ参加しましょう!

レッスン28: RGB LEDモジュール

このレッスンでは、Raspberry Pi Pico Wを使用してRGB LEDを制御する方法を学びます。各色チャンネルのGPIOピンにPWM(パルス幅変調)を設定し、赤、緑、青の成分の強度を調整することで、さまざまな色を作成する方法を発見します。このプロジェクトは、初心者にPWMと色の混合についての実践的な経験を提供し、Raspberry Pi Pico WとMicroPythonを使用して楽しくインタラクティブにエレクトロニクスとプログラミングの基礎を探求する良い機会です。さらに、割り込みを処理して安全にLEDをオフにする方法も学びます。

必要な部品

このプロジェクトでは、以下の部品が必要です。

全セットを購入するのが便利です。リンクはこちら:

Name

ITEMS IN THIS KIT

LINK

Universal Maker Sensor Kit

94

Universal Maker Sensor Kit

以下のリンクから個別に購入することもできます。

Component Introduction

Purchase Link

Raspberry Pi Pico W

-

RGB LEDモジュール

-

ブレッドボード

購入

配線

../_images/Lesson_28_RGB_LED_Module_pico_bb.png

コード

from machine import Pin, PWM
from time import sleep

# Initialize PWM for each color channel of an RGB LED
red = PWM(Pin(26))  # Red channel on GPIO pin 26
green = PWM(Pin(27))  # Green channel on GPIO pin 27
blue = PWM(Pin(28))  # Blue channel on GPIO pin 28

# Set 1000 Hz frequency for all channels
red.freq(1000)
green.freq(1000)
blue.freq(1000)


# Function to set RGB LED color
def set_color(r, g, b):
    red.duty_u16(r)  # Red intensity
    green.duty_u16(g)  # Green intensity
    blue.duty_u16(b)  # Blue intensity


try:
    while True:
        set_color(65535, 0, 0)  # Red
        sleep(1)
        set_color(0, 65535, 0)  # Green
        sleep(1)
        set_color(0, 0, 65535)  # Blue
        sleep(1)
except KeyboardInterrupt:
    set_color(0, 0, 0)  # Turn off RGB LED on interrupt

コード分析

  1. ライブラリのインポート

    machine モジュールは PWM クラスと Pin クラスを使用するためにインポートされます。 time モジュールは、遅延を作成するために sleep 関数を使用するためにインポートされます。

    from machine import Pin, PWM
    from time import sleep
    
  2. RGB LED の PWM 初期化

    RGB LED には 3 つのチャンネル(赤、緑、青)があり、それぞれが個別の PWM 信号で制御されます。PWM 信号は GPIO ピン 26、27、および 28 に接続されています。

    red = PWM(Pin(26))  # Red channel on GPIO pin 26
    green = PWM(Pin(27))  # Green channel on GPIO pin 27
    blue = PWM(Pin(28))  # Blue channel on GPIO pin 28
    
  3. PWM 信号の周波数設定

    PWM 信号の周波数は、3 つのチャンネルすべてで 1000 Hz に設定されています。

    red.freq(1000)
    green.freq(1000)
    blue.freq(1000)
    
  4. set_color 関数の定義

    この関数は、RGB LED の色を設定します。 duty_u16 メソッドは、各色チャンネルのデューティサイクルを設定し、その色の強度を決定します。

    def set_color(r, g, b):
        red.duty_u16(r)
        green.duty_u16(g)
        blue.duty_u16(b)
    
  5. メインプログラムループ

    無限ループを使用して LED の色を変更します。 set_color 関数を異なる値で呼び出して赤、緑、青の色を表示します。各色は 1 秒間表示されます。

    try:
        while True:
            set_color(65535, 0, 0)  # Red
            sleep(1)
            set_color(0, 65535, 0)  # Green
            sleep(1)
            set_color(0, 0, 65535)  # Blue
            sleep(1)
    except KeyboardInterrupt:
        set_color(0, 0, 0)  # Turn off RGB LED on interrupt