NeoPixels 也被称为 WS2812 LED 彩带,是连接在一起的全彩色 led 灯串。你可以设置他它们的 R 红色, G 绿色和 B 蓝色值(0~255). neopixel 模块可通过精确的时间控制,生成 WS2812 的控制信号.

导包

控制 NeoPixels 需要两个包,一个 NeoPixels 和一个 Pin

1
2
from machine import Pin
import neopixel

构造函数

NeoPixel 对象的构造函数如下:

1
NeoPixel(pin, n, bpp=3, timing=1)
参数描述
pin输出引脚(灯带采用单总线协议,只需要一个输出引脚即可)
n灯珠个数
bpp有两个值 34 .默认为 3 . 3 表示使用 3 元组RGB控制灯珠的颜色, 4 表示对于具有 3 种以上颜色的灯珠,例如RGBW像素或RGBY像素,采用4元组RGBY或RGBY像素
timin01 两个值,默认等于 0,为 400KHz 速率;等于1 的时候为800KHz速率

写入数据

写入数据有两种方式,一种是指定灯珠和颜色:

1
np[0] = (255, 0, 0) # 设置第一个LED像素为红色

另一种是填充所有灯珠颜色:

1
np.fill( (255, 0, 0) )

不管上面哪一种设置方式,设置完成后都需要调用 np.write() 接口讲准备好的数据传输给灯带.

1
np.write()

示例程序

以下是一个示例程序,功能是使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from machine import Pin
import neopixel

RGB_COUNT = 100
pin = Pin(12, Pin.OUT)
np = neopixel.NeoPixel(pin, n=RGB_COUNT, timing=1) #800khz

def neopixelFill(neopixel, color):
neopixel.fill(color)
neopixel.write()

def neopixelAdd(neopixel, data):
for num in data:
index = int(num)
if index >= 0 and index < RGB_COUNT:
neopixel[int(num)] = data[num]
neopixel.write()

neopixelFill(np, (0, 255, 0))