neopixel --- điều khiển đèn LED WS2812 / NeoPixel

Mô-đun này cung cấp trình điều khiển cho dải đèn LED WS2812 / NeoPixel. Trình điều khiển dựa vào machine.bitstream() để tạo ra tín hiệu định thời chính xác mà các đèn LED yêu cầu, do đó nó hoạt động trên bất kỳ cổng nào có mô-đun machine triển khai bitstream.

Ứng dụng đặt dữ liệu điểm ảnh thông qua phép gán phần tử hoặc NeoPixel.fill() rồi gọi NeoPixel.write() để cập nhật dải đèn. Mỗi điểm ảnh được biểu diễn dưới dạng tuple RGB hoặc RGBW theo thứ tự người dùng cung cấp; trình điều khiển xử lý thứ tự dây GRB(W) nội bộ.

Ví dụ:

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)

Khởi tạo đối tượng NeoPixel cho một dải đèn LED kết nối với pin.

  • pin là một thực thể machine.Pin; nó sẽ được cấu hình lại thành đầu ra bởi hàm khởi tạo.

  • n là số đèn LED trong dải.

  • bpp là số byte mỗi điểm ảnh: 3 cho đèn LED RGB (như WS2812) và 4 cho đèn LED RGBW (như SK6812-RGBW).

  • timing chọn định thời bit. 0 chọn định thời chậm 400 kHz, 1 chọn định thời chuẩn 800 kHz được hầu hết các dải hiện đại sử dụng. Có thể truyền một 4-tuple (high_0, low_0, high_1, low_1) gồm các khoảng thời gian tính bằng nanosecond, theo dạng mà machine.bitstream() chấp nhận.

ORDER: tuple[int, int, int, int]

Thuộc tính lớp ánh xạ thứ tự kênh hướng người dùng sang thứ tự dây. Mặc định là (1, 0, 2, 3), tức là các tuple (R, G, B[, W]) do người dùng cung cấp được truyền dưới dạng G R B [W]. Các lớp con có thể ghi đè ORDER để hỗ trợ các dải có thứ tự dây khác.

fill(pixel: tuple[int, ...]) None

Đặt mọi điểm ảnh trong dải thành pixel, một tuple RGB hoặc RGBW gồm các số nguyên trong khoảng 0-255.

__len__() int

Trả về số đèn LED trong dải.

__setitem__(index: int, val: tuple[int, ...]) None

Đặt điểm ảnh tại index thành val, một tuple RGB hoặc RGBW. Dữ liệu chỉ được lưu vào bộ đệm; gọi write() để đẩy lên dải đèn.

__getitem__(index: int) tuple[int, ...]

Trả về điểm ảnh tại index từ bộ đệm cục bộ dưới dạng tuple RGB hoặc RGBW theo thứ tự kênh hướng người dùng.

write() None

Truyền dữ liệu điểm ảnh đã đệm tới dải đèn bằng cách sử dụng machine.bitstream().