WS2812Bはチップ内蔵フルカラーLEDです。このLEDを使ったNeoPixelという商品シリーズでAdafruit さんが様々なタイプで販売しています。電子工作で使うにも使いやすくて定番のフルカラーLEDかなと思います。
手元で試してみたもの
普通のフルカラーLED砲弾タイプのやつは使ったことがあったのですが、NeoPixelのものは今回初めて触ってみました。WS2812系のものは有名なようで、色々と商品があるようです。NeoPixelと記載があるもの/ないものとりあえず、チップがわかっていれば制御ができるだろうと予想し、2種類ほどトライしました。
LEDテープ (LEDストリップ)の場合
WS2812をつかったものとしてLEDテープもあります。こちらの使用例の方が多いかもしれません。NeoPixelのライブラリを使って、同じように点灯の制御はできました。
LEDパネル (5×5)
wavesさんの方から出ており、WS2812を正方形の形に並べたパネルです。私は今回 5×5 のものを購入してみました。これも同じようにNeoPixelのライブラリを使用して制御ができるようです。
Raspberry Pi 4から使うには
サンプルコードもあるPython から使ってみます。まずはライブラリモジュールを以下のコマンドで新ストールしておきます。ここでは –break-system-packages をしてグローバルにインストールしてしまっていますが、安全にやるならPython仮想環境を用意してインストールの方がよいでしょう。
$ sudo apt install python3-pip
$ sudo pip3 install --break-system-packages rpi_ws281x
次にサンプルコードを取得してきます。サンプルには以下のリポジトリのものを使います。
$ git clone https://github.com/rpi-ws281x/rpi-ws281x-python
サンプルは examples/strandtest.py を使います。このファイルを開いて、少し設定を行います。
import time
from rpi_ws281x import PixelStrip, Color
import argparse
# LED strip configuration:
LED_COUNT = 25 # LEDの数
LED_PIN = 21 # 接続したピンの番号 (GPIOピン番号)
ここでは5×5のLEDパネルを接続する想定で、LEDの数を25に、GPIOピンとして21番を設定しています。この変更をしたあとで、次のコマンドを実行して動作を確認します。終了は Ctrl+C で行います。
$ sudo python3 strandtest.py -c
実行できた様子が次の通りです。実際にはとても明るく点灯し、キビキビとアニメーションをしています。見ていて楽しいです
参考情報
その他
ここで使用したrpi_ws281xですが、Raspberry Pi 5では動作しないという話を見かけました。Raspberry Pi 5ではRP1のチップがI/Oあたりの面倒を見るようになったので、その構成変更が影響しているようです。
コメント