こちらの続きです。 suzu-ha.com
シリアルLEDをRaspberry Piから制御してみます。
環境
Raspberry Pi 4B
Raspberry Pi OS bookworm
Python 3.11.2
rpi-ws281x-python 5.0.0
シリアルLEDテープ(WS2815)
ハードウェアの準備
シリアルLEDテープの端子のうち、+12VとGNDにDCジャックを取り付けます。
また、GND、DI、BIはブレッドボードに刺せるように導線を半田で固めます。
下図のように接続します。
ソフトウェアの準備
WS281X LED制御用ライブラリ
rpi_ws281xというライブラリがあります。
https://github.com/jgarff/rpi_ws281x
READMEによると、python向けディストリビューションrpi-ws281x-pythonが用意されているので、今回はこちらを使用します。
https://github.com/rpi-ws281x/rpi-ws281x-python
インストールはpipで実施します。
$ sudo pip3 install --break-system-packages rpi_ws281x
なお、--break-system-packagesオプションを付加しないと
× This environment is externally managed
というエラーでインストールできませんでした。
サンプルスクリプトの準備
rpi-ws281x-pythonのサンプルスクリプトを利用します。
$ cd 作業ディレクトリ(今回は/script) $ git clone https://github.com/rpi-ws281x/rpi-ws281x-python.git
サンプルスクリプトを編集します。
$ cd rpi-ws281x-python/examples $ vi strandtest.py
以下の部分を変更します。
# LED strip configuration:
# LED_COUNT = 16 # Number of LED pixels.
LED_COUNT = 60 ←LEDテープ上にあるLEDの数に合わせます。
# LED_PIN = 18 # GPIO pin connected to the pixels (18 uses PWM!).
# LED_PIN = 10 # GPIO pin connected to the pixels (10 uses SPI /dev/spidev0.0).
LED_PIN = 21 ←使用するGPIOの番号に合わせます。今回は21です。
LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz)
LED_DMA = 10 # DMA channel to use for generating signal (try 10)
LED_BRIGHTNESS = 255 # Set to 0 for darkest and 255 for brightest
LED_INVERT = False # True to invert the signal (when using NPN transistor level shift)
LED_CHANNEL = 0 # set to '1' for GPIOs 13, 19, 41, 45 or 53
実行
サンプルスクリプトを実行します。
$ sudo python strandtest.py
つぎはスクリプトを自作したいですね。