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 にプラグインするためのすべてが含まれており、以下に示すデモなどのファンキーなディスプレイ、アート、ゲームを作成できます。

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 電源を使用する必要があります。

クラス
- 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)