NeoPixel

neopixel 模块可让您使用Neopixel(WS2812)单独寻址带有Microbit的RGB LED灯条。注意要使用 neopixel 模块,你需要分别输入:

import neopixel

注解

从我们的测试中,Microbit Neopixel模块可以驱动高达约256 Neopixels。任何超过其以上的,你都可能会遇到奇怪的报错和事件。

NeoPixels是有趣的多色可编程LED。这个模块包含了所有插入micro:bit的并创建时髦显示、 艺术和游戏的内容,如下面的演示。

_images/neopixel.gif

要连接一条neopixels,您需要如下图所示连接micro:bit(假设你想从引脚0驱动像素,你也可以连接 neopixels到引脚1和2)。鳄鱼夹上的标签告诉你另一端将连接到neopixel上的哪个位置。

警告

不要在microbit上使用3伏的连接器来一次驱动超过8个Neopixels。 如果你想使用超过8个Neopixels,你必须为Neopixel电源引脚使用单独的3v-5v电源。

_images/neopixel-croc.png

class neopixel.NeoPixel(pin, n)

初始化通过引脚 pin 控制的 n 数目的neopixel LED灯带。每个像素由一个位置(从0开始)编址。Neopixels 被赋予0-255之间的RGB(红、绿、蓝)值作为元组。例如 (255,255,255) 是白色。

clear()

清除所有像素。

show()

显示像素。必须调用任何更新才能看到。

运行

编写颜色不会更新显示(使用 show() )。

np[0] = (255, 0, 128)  # first element
np[-1] = (0, 255, 0)  # last element
np.show()  # only now will the updated value be shown

读取刚提到的特定像素的颜色。

print(np[0])

使用 Neopixels

与Neopixels交互,就好像它们是元组列表一样。每个元组表示特定像素的RGB(red, green and blue)混合颜色。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带里,使用展示()功能:

np.show()

如果什么都没发生,很有可能是因为你忘记了这最后一步。

注解

如果你在Neopixel带上没有看到任何的改变,确定你在某个地方 show() , 否则你的更新不会显示。

示例

"""
    neopixel_random.py

    Repeatedly displays random colours onto the LED strip.
    This example requires a strip of 8 Neopixels (WS2812) connected to pin0.

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

# Setup the Neopixel strip on pin0 with a length of 8 pixels
np = neopixel.NeoPixel(pin0, 8)

while True:
    #Iterate over each LED in the strip

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

        # Assign the current LED a random red, green and blue value between 0 and 60
        np[pixel_id] = (red, green, blue)

        # Display the current pixel data on the Neopixel strip
        np.show()
        sleep(100)