このドキュメンテーションは、MicroPython の最新開発ブランチのためのものです。 リリースバージョンでは利用できない機能に言及することがあります。

特定のリリースのドキュメントをお探しの場合は、左側のドロップダウンメニューを使って、 望みのバージョンを選択します。

11. NeoPixel の制御

NeoPixel は WS2812 LEDとも呼ばれ、シリアルに接続され、個別にアドレス可能で、赤、緑、青のコンポーネントを 0〜255 の間で設定できるフルカラーLEDです。NeoPixel は正確なタイミングでの制御を必要とするため、特別な neopixel モジュールを用意しています。

NeoPixel オブジェクトを作成するには、次のようにします:

>>> import machine, neopixel
>>> np = neopixel.NeoPixel(machine.Pin(4), 8)

これは、GPIO4 上の8ピクセルの NeoPixel を構築します。繋げたものに合わせて、"4" (ピン番号)と "8" (ピクセル数)を調整することができます。

To set the colour of pixels use:

>>> np[0] = (255, 0, 0) # 赤の最大輝度に設定
>>> np[1] = (0, 128, 0) # 緑の最大輝度に設定
>>> np[2] = (0, 0, 64)  # 青の最大輝度に設定

3色以上の LED について、RGBW ピクセルや RGBY ピクセルなど、NeoPixel クラスは bpp パラメータを取ります。RGBW ピクセルの NeoPixel オブジェクトを設定するには、次の操作を行います。

>>> import machine, neopixel
>>> np = neopixel.NeoPixel(machine.Pin(4), 8, bpp=4)

4-bpp モードでは、3タプルの代わりに4タプルを使用して色を設定してください。たとえば、先の3つのピクセルを設定するには次のようにします。

>>> np[0] = (255, 0, 0, 128) # Orange in an RGBY Setup
>>> np[1] = (0, 255, 0, 128) # Yellow-green in an RGBY Setup
>>> np[2] = (0, 0, 255, 128) # Green-blue in an RGBY Setup

次に write() メソッドを使って色を LED に出力します:

>>> np.write()

以下のデモ関数は、いろいろな LED の光らせ方を見せてくれます:

import time

def demo(np):
    n = np.n

    # 循環
    for i in range(4 * n):
        for j in range(n):
            np[j] = (0, 0, 0)
        np[i % n] = (255, 255, 255)
        np.write()
        time.sleep_ms(25)

    # バウンド
    for i in range(4 * n):
        for j in range(n):
            np[j] = (0, 0, 128)
        if (i // n) % 2 == 0:
            np[i % n] = (0, 0, 0)
        else:
            np[n - 1 - (i % n)] = (0, 0, 0)
        np.write()
        time.sleep_ms(60)

    # フェードイン/フェードアウト
    for i in range(0, 4 * 256, 8):
        for j in range(n):
            if (i // 256) % 2 == 0:
                val = i & 0xff
            else:
                val = 255 - (i & 0xff)
            np[j] = (val, 0, 0)
        np.write()

    # 消灯
    for i in range(n):
        np[i] = (0, 0, 0)
    np.write()

この関数は次のように実行します:

>>> demo(np)