neopixel --- 控制 WS2812 / NeoPixel LED¶
本模組提供 WS2812 / NeoPixel LED 燈條的驅動程式。此驅動程式依賴 machine.bitstream() 來產生 LED 所需的精確時序訊號,因此它可在任何 machine 模組實作了 bitstream 的連接埠上運作。
應用程式透過項目賦值或 NeoPixel.fill() 來設定像素資料,然後呼叫 NeoPixel.write() 來更新燈條。每個像素都以使用者所接受的順序,以 RGB 或 RGBW 元組形式呈現;驅動程式會在內部處理 GRB(W) 的線路順序。
範例::
import machine
import neopixel
# 32 LED strip connected to pin P7.
n = neopixel.NeoPixel(machine.Pin("P7"), 32)
# Draw a red gradient.
for i in range(32):
n[i] = (i * 8, 0, 0)
# Update the strip.
n.write()
class NeoPixel¶
- class neopixel.NeoPixel(pin: 'machine.Pin', n: int, bpp: int = 3, timing: int | tuple[int, int, int, int] = 1)¶
為連接到 pin 的 LED 燈條建構一個
NeoPixel物件。pin 是一個
machine.Pin實例;建構子會將它重新設定為輸出。n 是燈條中 LED 的數量。
bpp 是每個像素的位元組數:RGB LED(例如 WS2812)為
3,RGBW LED(例如 SK6812-RGBW)為4。timing 選擇位元時序。
0選擇較慢的 400 kHz 時序,1選擇大多數現代燈條所使用的標準 800 kHz 時序。也可以改為傳入一個以奈秒為單位的 4 元組(high_0, low_0, high_1, low_1),其格式為machine.bitstream()所接受的形式。
- ORDER: tuple[int, int, int, int]¶
將使用者面向的通道順序對應到線路順序的類別屬性。預設為
(1, 0, 2, 3),亦即使用者提供的(R, G, B[, W])元組會以G R B [W]的順序傳輸。子類別可覆寫ORDER以支援具有不同線路順序的燈條。
- __setitem__(index: int, val: tuple[int, ...]) None¶
將位於 index 的像素設定為 val,即一個 RGB 或 RGBW 元組。資料只會被緩衝;請呼叫
write()將其推送到燈條。
- write() None¶
使用
machine.bitstream()將緩衝的像素資料傳輸到燈條。