3.3 WS2812 RGB ストリップ¶
WS2812は、制御回路とRGBチップが5050コンポーネントのパッケージ内に統合されているインテリジェントなLED光源です。 この中には、インテリジェントなデジタルポートデータラッチと信号整形増幅駆動回路が内蔵されています。 さらに、高精度の内部オシレーターとプログラム可能な定電流制御部も含まれており、ピクセルポイントの光色の高度な一貫性を効果的に確保します。
データ転送プロトコルは、シングルNZR通信モードを使用します。 ピクセルが電源投入リセット後、DINポートはコントローラからデータを受信し、最初のピクセルが初期の24ビットデータを収集して内部データラッチに送ります。その他のデータは、内部信号整形増幅回路によって整形され、DOポートを介して次のカスケードピクセルに送信されます。各ピクセルの伝送後、信号は24ビット減少します。 ピクセルは、自動的に形状を整える伝送技術を採用しており、ピクセルのカスケード数は信号伝送の速度にのみ依存しています。
必要なコンポーネント
このプロジェクトでは、以下のコンポーネントが必要です。
便利なのは、一式を購入することです。リンクはこちら:
名前 |
このキットに含まれるアイテム |
購入リンク |
---|---|---|
ケプラーキット |
450以上 |
以下のリンクから個別に購入することもできます。
SN |
コンポーネントの説明 |
数量 |
購入リンク |
---|---|---|---|
1 |
1 |
||
2 |
マイクロUSBケーブル |
1 |
|
3 |
1 |
||
4 |
数本 |
||
5 |
1 |
回路図
配線
警告
注目すべき一点は電流です。
Pico Wで任意の数のLEDを使用することは可能ですが、そのVBUSピンの電力は限られています。 ここでは、安全な範囲内である8つのLEDを使用します。 ただし、より多くのLEDを使用したい場合は、別の電源を追加する必要があります。
コード
注釈
ファイル
3.3_rgb_led_strip.ino
をkepler-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.ino
をkepler-kit-main/arduino/3.3_rgb_led_strip_flowing
のパスで開けます。または、このコードを Arduino IDE にコピーしてください。
アップロード ボタンをクリックする前に、ボード(Raspberry Pi Pico)と正しいポートを選択してください。
または、このWS2812 LEDストリップで色の輪(範囲65535)をサイクルさせることができます。
注釈
ファイル
3.3_rgb_led_strip_rainbow.ino
をkepler-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()
: 各ピクセルに割り当てる前に"より真実な"色を提供します。