注釈

こんにちは、FacebookのSunFounder Raspberry Pi & Arduino & ESP32愛好者コミュニティへようこそ!Raspberry Pi、Arduino、ESP32について、他の愛好者と共にさらに深く学びましょう。

参加する理由

  • 専門家のサポート: 購入後の問題や技術的な課題を、コミュニティやチームのサポートを通じて解決できます。

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

  • 独占プレビュー: 新製品の発表や先行情報にいち早くアクセスできます。

  • 特別割引: 最新製品に対する独占的な割引を楽しめます。

  • 季節限定のプロモーションとギブアウェイ: ギブアウェイや祝祭のプロモーションに参加できます。

👉 一緒に探求し、創造しませんか?今すぐ [こちら] をクリックして参加しましょう!

3.3 RGB LEDストリップの制御

このレッスンでは、Raspberry Pi Pico 2とMicroPythonを使用して**RGB LEDストリップ**(特にWS2812タイプ)を制御する方法を学びます。

WS2812は、制御回路とRGBチップを5050サイズのLEDパッケージに統合したスマートLEDです。各LEDには独自のコントローラーが内蔵されており、単一のデータラインで個別にLEDを制御できます。これにより、ストリップ上の各LEDの色と明るさを独立して変更することが可能です。

必要なもの

このプロジェクトには、以下のコンポーネントが必要です。

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

名称

セット内容

リンク

Newton Lab Kit

450+

Newton Lab Kit

個別に購入することもできます。

SN

コンポーネント

数量

リンク

1

Raspberry Pi Pico 2

1

購入

2

Micro USBケーブル

1

3

ブレッドボード

1

購入

4

ジャンパーワイヤー

数本

購入

5

WS2812 RGB 8 LEDストリップ

1

購入

回路図

sch_ws2812

配線図

wiring_ws2812

電流の消費に注意してください。PicoのVBUSピンは少数のLED(例えば8個)には電力を供給できますが、より多くのLEDを使用する場合はPicoが過負荷にならないよう、外部電源が必要になることがあります。

コードの記述

注釈

  • newton-lab-kit/micropython から 3.3_rgb_led_strip.py を開くか、コードをThonnyにコピーして「実行」ボタンをクリック、またはF5キーを押して実行します。

  • 正しいインタープリタ(MicroPython (Raspberry Pi Pico).COMxx)が選択されていることを確認してください。

  • ここでは ws2812.py ライブラリを使用します。Picoにアップロードされているか確認し、詳細なチュートリアルについては Picoにライブラリをアップロード をご参照ください。

import machine
from ws2812 import WS2812

# LEDストリップの初期化
led_strip = WS2812(machine.Pin(0), 8)  # GP0を使用し、8個のLED

# 各LEDの色を設定
led_strip[0] = [255, 0, 0]     # 赤
led_strip[1] = [0, 255, 0]     # 緑
led_strip[2] = [0, 0, 255]     # 青
led_strip[3] = [255, 255, 0]   # 黄
led_strip[4] = [0, 255, 255]   # シアン
led_strip[5] = [255, 0, 255]   # マゼンタ
led_strip[6] = [255, 255, 255] # 白
led_strip[7] = [128, 128, 128] # 灰色

# LEDストリップを更新して色を表示
led_strip.write()

このコードが実行されると、GP0ピンに接続された8個のWS2812 LEDストリップが以下の色を表示します:

  • LED 0: 赤 (255, 0, 0)

  • LED 1: 緑 (0, 255, 0)

  • LED 2: 青 (0, 0, 255)

  • LED 3: 黄 (255, 255, 0)

  • LED 4: シアン (0, 255, 255)

  • LED 5: マゼンタ (255, 0, 255)

  • LED 6: 白 (255, 255, 255)

  • LED 7: 灰色 (128, 128, 128)

コードの理解

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

    • machine: ハードウェア関連の機能を提供

    • WS2812: WS2812 LEDストリップを制御するライブラリ

  2. LEDストリップの初期化:

    • led_strip = WS2812(machine.Pin(0), 8): GP0ピンに接続された8個のLEDを持つLEDストリップを初期化

  3. 色の設定:

    • led_strip[0] = [255, 0, 0]: RGB値(赤、緑、青)を使用して、各LEDの色を設定(0〜255の範囲)

  4. LEDストリップの更新:

    • led_strip.write(): LEDストリップに色データを送信し、色を表示

流れる虹色効果を作ってみよう!

次に、ランダムに色を生成し、それをストリップ上でシフトさせて、カラフルな流れる光の効果を作成します。

import machine
from ws2812 import WS2812
import utime
import urandom

# LEDストリップのLED数
NUM_LEDS = 8

# 8個のLEDを持つLEDストリップの初期化
led_strip = WS2812(machine.Pin(0), NUM_LEDS)

def flowing_light():
    # 色をストリップ上でシフト
    for i in range(NUM_LEDS - 1, 0, -1):
        led_strip[i] = led_strip[i - 1]
    # 最初のLEDにランダムな色を生成
    led_strip[0] = [urandom.getrandbits(8), urandom.getrandbits(8), urandom.getrandbits(8)]
    # ストリップを更新
    led_strip.write()
    # スムーズなアニメーションのために少し待機
    utime.sleep_ms(100)

# メインループ
while True:
    flowing_light()

このコードが実行されると、LEDストリップはランダムな色で流れる動的な効果を表示し、各サイクルで新しいランダムな色がストリップの最初に追加され、最後に向かってシフトします。

コードの理解

  1. ランダムカラー生成: 各コンポーネントが0〜255の範囲でランダムなRGB色を生成します。

    [urandom.getrandbits(8), urandom.getrandbits(8), urandom.getrandbits(8)]
    
  2. 色のシフト: 各LEDの色を次の位置に移動させ、流れる効果を作り出します。

    for i in range(NUM_LEDS - 1, 0, -1):
        led_strip[i] = led_strip[i - 1]
    
  3. 無限ループ: LEDストリップを更新し続けて、アニメーションを実行し続けます。

    while True:
        flowing_light()
    

さらに実験してみよう

  • 速度調整: utime.sleep_ms(100) を変更して、流れる効果の速度を速くしたり遅くしたりできます。

  • LEDを増やす: より長いストリップがある場合、 WS2812(machine.Pin(0), number_of_leds) の数を変更してください。

  • カスタムアニメーション: 様々なパターンや色の組み合わせを試して、自分だけのアニメーションを作りましょう。

結論

Raspberry Pi Pico 2とMicroPythonを使用してRGB LEDストリップを制御する方法を学びました!これにより、素晴らしい光のディスプレイやムードライト、さらにはインタラクティブなアートプロジェクトを作成するための可能性が広がります。