neopixel --- WS2812 / NeoPixel LED の制御¶
このモジュールは WS2812 / NeoPixel LED ストリップ用のドライバを提供します。このドライバは LED が要求する正確なタイミングの信号を生成するために machine.bitstream() に依存しているため、machine モジュールが bitstream を実装しているポートであればどこでも動作します。
アプリケーションは要素への代入または NeoPixel.fill() でピクセルデータを設定し、続いて NeoPixel.write() を呼び出してストリップを更新します。各ピクセルはユーザーが受け取る順序の RGB または RGBW タプルとして公開され、ドライバは内部で GRB(W) のワイヤ順序を処理します。
例:
import machine
import neopixel
# 32 LED strip connected to pin P7.
n = neopixel.NeoPixel(machine.Pin("P7"), 32)
# Draw a red gradient.
for i in range(32):
n[i] = (i * 8, 0, 0)
# Update the strip.
n.write()
class NeoPixel¶
- class neopixel.NeoPixel(pin: 'machine.Pin', n: int, bpp: int = 3, timing: int | tuple[int, int, int, int] = 1)¶
pin に接続された LED ストリップ用の
NeoPixelオブジェクトを構築します。pin は
machine.Pinインスタンスで、コンストラクタによって出力として再構成されます。n はストリップ内の LED の数です。
bpp は 1 ピクセルあたりのバイト数です。RGB LED(WS2812 など)では
3、RGBW LED(SK6812-RGBW など)では4を指定します。timing はビットタイミングを選択します。
0は低速の 400 kHz タイミング、1は最近のほとんどのストリップで使われる標準の 800 kHz タイミングを選択します。代わりに、machine.bitstream()が受け付ける形式で、ナノ秒単位の継続時間からなる 4 要素タプル(high_0, low_0, high_1, low_1)を渡すこともできます。
- ORDER: tuple[int, int, int, int]¶
ユーザー向けのチャンネル順序をワイヤ順序にマッピングするクラス属性です。デフォルトは
(1, 0, 2, 3)で、つまりユーザーが指定した(R, G, B[, W])タプルはG R B [W]として送信されます。サブクラスはORDERをオーバーライドして、異なるワイヤ順序のストリップに対応できます。
- __setitem__(index: int, val: tuple[int, ...]) None¶
index のピクセルを RGB または RGBW タプル val に設定します。データはバッファに保存されるだけです。ストリップに送出するには
write()を呼び出してください。
- __getitem__(index: int) tuple[int, ...]¶
ローカルバッファから index のピクセルを、ユーザー向けのチャンネル順序の RGB または RGBW タプルとして返します。
- write() None¶
バッファに保存されたピクセルデータを
machine.bitstream()を使ってストリップに送信します。