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 オブジェクトを構築します。

  • pinmachine.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 をオーバーライドして、異なるワイヤ順序のストリップに対応できます。

fill(pixel: tuple[int, ...]) None

ストリップ内のすべてのピクセルを、0255 の範囲の整数からなる RGB または RGBW タプル pixel に設定します。

__len__() int

ストリップ内の LED の数を返します。

__setitem__(index: int, val: tuple[int, ...]) None

index のピクセルを RGB または RGBW タプル val に設定します。データはバッファに保存されるだけです。ストリップに送出するには write() を呼び出してください。

__getitem__(index: int) tuple[int, ...]

ローカルバッファから index のピクセルを、ユーザー向けのチャンネル順序の RGB または RGBW タプルとして返します。

write() None

バッファに保存されたピクセルデータを machine.bitstream() を使ってストリップに送信します。