新像素¶
该 neopixel
模块可让您通过micro:bit使用 NeoPixel (WS2812) 可单独寻址的 RGB 和 RGBW V2 LED 灯条。注意使用neopixel
模块,需要单独导入:
import neopixel
笔记
根据我们的测试,Microbit NeoPixel 模块最多可以驱动大约 256 个 NeoPixel。任何超出此范围的内容,您都可能会遇到奇怪的错误和问题。micro:bit 只能 为外部设备提供 90mA V1 或 190mA V2,更多的 NeoPixels 需要一个带有公共接地的外部电源。
NeoPixels 设计为在 5V 下工作,但幸运的是它们仍然使用 BBC micro:bit 的 3V 电源工作。请注意,micro:bit 边缘连接器不应连接到任何提供 5V 的电源。
NeoPixels 是有趣的多色可编程 LED 灯条。该模块包含将它们插入 micro:bit 并创建时髦的显示、艺术和游戏的所有内容,如下所示的演示。
要连接一条 neopixels,您需要连接 micro:bit,如下所示(假设您想从 pin 0 驱动像素 - 您也可以将 neopixels 连接到 pin 1 和 2)。鳄鱼夹上的标签告诉您将另一端连接到新像素条上的位置。在某些新像素变体上,VDD 引脚可能被标记为其他东西 - 例如“V+”。在某些情况下,它可能被称为“+5V”,只有在您没有连接其他 5V 设备时才可以安全使用。
警告
不要使用 Microbit 上的 3v 连接器一次为超过 8 个 Neopixels 供电。
如果您希望使用超过 8 个 Neopixels,则必须为 Neopixel 电源引脚使用单独的 3v-5v 电源。
班级¶
-
class
neopixel.
NeoPixel
(pin, n)¶ -
class
neopixel.
NeoPixel
(pin, n, bpp) 初始化
n
通过 pin 控制的新像素 LED条数pin
。的V2微:位也可以支持RGBW neopixels,所以第三个参数可以被传递到NeoPixel
用于指示每像素(BPP)的字节数。对于 RGBW,这4
不是3
RGB 和 GRB的默认值。每个像素由一个位置(从 0 开始)寻址。Neopixels 被赋予 RGB(红、绿、蓝)/RGBW(红、绿、蓝、白) V2 值在 0-255 之间作为一个元组。例如,在 RGB 中,
(255,255,255)
就是白色。在RGBW,(255,255,255,0)
或者(0,0,0,255)
是白色。-
clear
()¶ 清除所有像素。
-
fill
(colour)¶ V2用给定的 RGB/RGBW 值为所有像素着色。的颜色参数应该是相同的长度每像素(BPP)的字节数的一个元组。例如
fill((0,0,255))
。与 结合使用show()
以更新 Neopixels。
-
操作¶
写入颜色不会更新显示(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(红色、绿色和蓝色)/RGBW(红色、绿色、蓝色和白色)混合颜色。RGBW 值的范围可以在 0 到 255 之间。
例如,在连接到 pin0 的条带上初始化 8 个 RGB neopixels 条带,如下所示:
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
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)