NeoPixel

neopixel モジュールを使用すると、個別にアドレス可能な RGB LED または RGBW LED である NeoPixel (WS2812) を micro:bit で使えます。この neopixel モジュールを使うには以下のモジュールのインポートが必要です:

import neopixel

注釈

From our tests, the Microbit NeoPixel module can drive up to around 256 NeoPixels. Anything above that and you may experience weird bugs and issues. The micro:bit can only supply 90mA to external devices, larger numbers of NeoPixels require an external power supply with common ground.

NeoPixel は 5V で動作するように設計されていますが、幸いにもBBCマイクロビットの 3V 電源を使って動作します。micro:bit の エッジコネクタは 5V を供給するものに接続しないでください。

NeoPixel はマルチカラーのプログラマブルな面白い LED ボードです。このモジュールには、micro:bit にプラグインするためのすべてが含まれており、以下に示すデモなどのファンキーなディスプレイ、アート、ゲームを作成できます。

Neopixel flexible tile

Image attribution: adafruit flexible Neopixel matrix

neopixel ボードを接続するには、以下のように micro:bit を接続する必要があります(これは NeoPixel を端子 0 から駆動したい場合ですが、端子 1 や 2 に接続することもできます)。ワニ口クリップのラベルは、NeoPixel ボードにもう一方の端を取り付ける場所を示しています。VDD 端子は、NeoPixel によっては何か他のラベル、たとえば "V+" がついているかもしれません。ものによっては "+5V" とついていることもありますが、他に 5V のデバイスが繋がっていないのであれば問題ありません。

警告

micro:bit の 3V 端子から、一度に8つ以上の NeoPixel に給電しないでください。

8つ以上の NeoPixel を使用する場合は、ネオピクセルの電源端子に別の 3v - 5v 電源を使用する必要があります。

_images/neopixel-croc.png

クラス

class neopixel.NeoPixel(pin, n, bpp=3)

端子 pin を介して制御する n 個の neopixel LED を持つストリップを初期化します。RGBW neopixel もサポートするため、ピクセルあたりのバイト数(bpp)を示す第3引数を NeoPixel に渡せるようになっています。"RGBW の場合は bpp に 4 を指定します。デフォルトの bpp は RGB と GRB を示す 3 です。

各ピクセルは(0から始まる)位置によってアドレス指定されます。NeoPixel にはタプルとして0-255 の RGB (赤, 緑, 青) / RGBW (赤, 緑, 青, 白) が与えられます。たとえば (255,255,255) は白になります。白を RGBW で指定する場合は (255,255,255,0) または (0,0,0,255) となります。

clear()

すべてのピクセルをクリアします。

show()

ピクセルを表示します。更新が表示するには、これを呼び出す必要があります

演算子

色を書き込んでも表示は更新されません(表示するには show() を呼び出します)。

np[0] = (255, 0, 128)  # 最初の素子
np[-1] = (0, 255, 0)  # 最後の素子
np.show()  # 更新された値が表示されます

特定のピクセルの色を読み取るには、それを参照するだけです。

print(np[0])

NeoPixel の使い方

NeoPixel とのやりとりは、それがタプルのリストであるかのように行えます。各タプルは、特定のピクセルの色の RGB (赤, 緑, 青) / RGB (赤, 緑, 青, 白) の組み合わせを表します。RGBW 値の範囲は 0 から 255 までです。

たとえば、次のように pin0 に接続された 8 個の RGB ピクセルを持つ NeoPixel ストリップを初期化します:

import neopixel
np = neopixel.NeoPixel(pin0, 8)

それらピクセルを(Python のリストのように)インデックス付けして設定します。たとえば、最初のピクセルを最大照度の赤に設定するには次のようにします:

np[0] = (255, 0, 0)

最後のピクセルを紫色にするには次のようにします:

np[-1] = (255, 0, 255)

ピクセルの現在のカラー値を得るには、インデックス付けして参照します。たとえば、最初のピクセルの RGB 値を表示するには次のようにします。

print(np[0])

最後に、新しい色データを NeoPixel ボードの表示に反映するには、.show()関数を使います:

np.show()

何も起こらない場合、おそらくあなたはこの最終ステップを忘れてしまっているのです..!

注釈

NeoPixel ボードで何か変化が見られない場合、少なくともアップデートしたものが表示されていなければ、 show() を確認してください。

サンプルコード

"""
    neopixel_random.py

    LED ボードにランダムな色を繰り返し表示します。
    このサンプルでは、8 Neopixel のボード(WS2812)を pin0 に接続する必要があります。

"""
from microbit import *
import neopixel
from random import randint

# 8 ピクセルの Neopixel ボードを pin0 に接続されていることを設定
np = neopixel.NeoPixel(pin0, 8)

while True:
    # ボードにある各 LED について繰り返し

    for pixel_id in range(0, len(np)):
        red = randint(0, 60)
        green = randint(0, 60)
        blue = randint(0, 60)

        # 現在の LED を 0〜60 のランダムな赤、緑、青の値に設定
        np[pixel_id] = (red, green, blue)

        # Neopixel ボード上の現在のピクセルデータを表示
        np.show()
        sleep(100)