3.3 WS2812 RGB ストリップ

WS2812は、制御回路とRGBチップが5050コンポーネントのパッケージ内に統合されているインテリジェントなLED光源です。 この中には、インテリジェントなデジタルポートデータラッチと信号整形増幅駆動回路が内蔵されています。 さらに、高精度の内部オシレーターとプログラム可能な定電流制御部も含まれており、ピクセルポイントの光色の高度な一貫性を効果的に確保します。

データ転送プロトコルは、シングルNZR通信モードを使用します。 ピクセルが電源投入リセット後、DINポートはコントローラからデータを受信し、最初のピクセルが初期の24ビットデータを収集して内部データラッチに送ります。その他のデータは、内部信号整形増幅回路によって整形され、DOポートを介して次のカスケードピクセルに送信されます。各ピクセルの伝送後、信号は24ビット減少します。 ピクセルは、自動的に形状を整える伝送技術を採用しており、ピクセルのカスケード数は信号伝送の速度にのみ依存しています。

必要なコンポーネント

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

便利なのは、一式を購入することです。リンクはこちら:

名前

このキットに含まれるアイテム

購入リンク

ケプラーキット

450以上

Kepler Kit

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

SN

コンポーネントの説明

数量

購入リンク

1

Raspberry Pi Pico W

1

BUY

2

マイクロUSBケーブル

1

3

ブレッドボード

1

BUY

4

ジャンパーワイヤー

数本

BUY

5

WS2812 RGB 8 LEDストリップ

1

BUY

回路図

sch_ws2812

配線

wiring_ws2812

警告

注目すべき一点は電流です。

Pico Wで任意の数のLEDを使用することは可能ですが、そのVBUSピンの電力は限られています。 ここでは、安全な範囲内である8つのLEDを使用します。 ただし、より多くのLEDを使用したい場合は、別の電源を追加する必要があります。

コード

注釈

  • ファイル 3.3_rgb_led_strip.inokepler-kit-main/arduino/3.3_rgb_led_strip のパスで開けます。

  • または、このコードを Arduino IDE にコピーしてください。

  • アップロード ボタンをクリックする前に、ボード(Raspberry Pi Pico)と正しいポートを選択してください。

  • ここではライブラリ Adafruit_NeoPixel を使用しています。Arduino IDEに追加する方法については、 ライブラリを追加 を参照してください。

お気に入りの色を選んで、RGB LEDストリップで表示してみましょう!

動作の仕組み

Adafruit_NeoPixel型のオブジェクトを宣言し、 PIXEL_PIN に接続されています。 ストリップには PIXEL_COUNT 個のRGB LEDがあります。

#define PIXEL_PIN    0
#define PIXEL_COUNT 8

// Declare our NeoPixel strip object:
Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
// Argument 1 = Number of pixels in NeoPixel strip
// Argument 2 = Arduino pin number (most are valid)
// Argument 3 = Pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
//   NEO_RGBW    Pixels are wired for RGBW bitstream (NeoPixel RGBW products)

ストリップオブジェクトを初期化し、すべてのピクセルを「オフ」に設定します。

関数

  • strip.begin() : NeoPixelストリップオブジェクトを初期化(必須)。

  • strip.setPixelColor(index, color) : ピクセルの色を設定(RAM内)。 color は単一の'パックされた' 32ビット値でなければなりません。

  • strip.Color(red, green, blue) : 単一の'パックされた' 32ビット値としての色。

  • strip.show() : 新しい内容でストリップを更新。

さらに学ぶ

ランダムに色を生成し、カラフルな流れる光を作成することができます。

注釈

  • ファイル 3.3_rgb_led_strip_flowing.inokepler-kit-main/arduino/3.3_rgb_led_strip_flowing のパスで開けます。

  • または、このコードを Arduino IDE にコピーしてください。

  • アップロード ボタンをクリックする前に、ボード(Raspberry Pi Pico)と正しいポートを選択してください。

または、このWS2812 LEDストリップで色の輪(範囲65535)をサイクルさせることができます。

注釈

  • ファイル 3.3_rgb_led_strip_rainbow.inokepler-kit-main/arduino/3.3_rgb_led_strip_rainbow のパスで開けます。

  • または、このコードを Arduino IDE にコピーしてください。

  • アップロード ボタンをクリックする前に、ボード(Raspberry Pi Pico)と正しいポートを選択してください。

  • strip.getPixelColor(index) : 以前に設定されたピクセルの色をクエリします。

  • strip.ColorHSV(pixelHue) : 色相、彩度、明度を setPixelColor() または他のRGB互換関数に渡すことができるパックされた32ビットRGB色に変換します。

  • strip.gamma32() : 各ピクセルに割り当てる前に"より真実な"色を提供します。