注意書き

本サイトでは、アフィリエイト広告およびGoogleアドセンスを利用しています。

WS2812BのLEDパネル

ハードウェア

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

次にサンプルコードを取得してきます。サンプルには以下のリポジトリのものを使います。

GitHub - adafruit/Adafruit_NeoPixel: Arduino library for controlling single-wire LED pixels (NeoPixel, WS2812, etc.)
Arduino library for controlling single-wire LED pixels (NeoPixel, WS2812, etc.) - adafruit/Adafruit_NeoPixel
$ 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

実行できた様子が次の通りです。実際にはとても明るく点灯し、キビキビとアニメーションをしています。見ていて楽しいです

参考情報

ラズパイ4でneoPIXELを使う(PYTHONプログラム) | KatsEye

その他

ここで使用したrpi_ws281xですが、Raspberry Pi 5では動作しないという話を見かけました。Raspberry Pi 5ではRP1のチップがI/Oあたりの面倒を見るようになったので、その構成変更が影響しているようです。

コメント

タイトルとURLをコピーしました