注釈
こんにちは、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+ |
個別に購入することもできます。
SN |
コンポーネント |
数量 |
リンク |
|---|---|---|---|
1 |
1 |
||
2 |
Micro USBケーブル |
1 |
|
3 |
1 |
||
4 |
数本 |
||
5 |
1 |
回路図

配線図
電流の消費に注意してください。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)
コードの理解
ライブラリのインポート:
machine: ハードウェア関連の機能を提供WS2812: WS2812 LEDストリップを制御するライブラリ
LEDストリップの初期化:
led_strip = WS2812(machine.Pin(0), 8): GP0ピンに接続された8個のLEDを持つLEDストリップを初期化
色の設定:
led_strip[0] = [255, 0, 0]: RGB値(赤、緑、青)を使用して、各LEDの色を設定(0〜255の範囲)
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ストリップはランダムな色で流れる動的な効果を表示し、各サイクルで新しいランダムな色がストリップの最初に追加され、最後に向かってシフトします。
コードの理解
ランダムカラー生成: 各コンポーネントが0〜255の範囲でランダムなRGB色を生成します。
[urandom.getrandbits(8), urandom.getrandbits(8), urandom.getrandbits(8)]
色のシフト: 各LEDの色を次の位置に移動させ、流れる効果を作り出します。
for i in range(NUM_LEDS - 1, 0, -1): led_strip[i] = led_strip[i - 1]
無限ループ: LEDストリップを更新し続けて、アニメーションを実行し続けます。
while True: flowing_light()
さらに実験してみよう
速度調整:
utime.sleep_ms(100)を変更して、流れる効果の速度を速くしたり遅くしたりできます。LEDを増やす: より長いストリップがある場合、
WS2812(machine.Pin(0), number_of_leds)の数を変更してください。カスタムアニメーション: 様々なパターンや色の組み合わせを試して、自分だけのアニメーションを作りましょう。
結論
Raspberry Pi Pico 2とMicroPythonを使用してRGB LEDストリップを制御する方法を学びました!これにより、素晴らしい光のディスプレイやムードライト、さらにはインタラクティブなアートプロジェクトを作成するための可能性が広がります。
