NeoPixel

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

import neopixel

注釈

私たちのテストから、micro:bit の neopixel モジュールは約256 Neopixels まで駆動できます。それ以上のものは、奇妙なバグや問題に遭遇するかもしれません。

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

_images/neopixel.gif

neopixel ボードを接続するには、以下のように micro:bit」 を接続する必要があります(これは NeoPixel を端子 0 から駆動したい場合ですが、端子 1 や 2 に接続することもできます)。ワニ口クリップのラベルは、NeoPixel ボードにもう一方の端を取り付ける場所を示しています。

警告

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

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

_images/neopixel-croc.png

クラス

class neopixel.NeoPixel(pin, n)

端子 pin を介して制御する n 個の neopixel LED を持つボードを初期化します。各ピクセルは、位置(0から始まる)によってアドレス指定されます。ネオピクセルにはタプルとして0-255 の RGB (赤, 緑, 青) 値が与えられます。たとえば (255,255,255) は白です。

clear()

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

show()

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

演算子

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

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

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

print(np[0])

NeoPixel の使い方

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

たとえば、次のように pin0 に接続された 8 ピクセルの 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)