neopixel — WS2812 / NeoPixel LED 제어

이 모듈은 WS2812 / NeoPixel LED 스트립용 드라이버를 제공합니다. 이 드라이버는 LED가 기대하는 정밀한 타이밍의 신호를 생성하기 위해 machine.bitstream()에 의존하므로, 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 객체를 생성합니다.

  • pinmachine.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를 재정의할 수 있습니다.

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

스트립의 모든 픽셀을 pixel로 설정합니다. pixel0-255 범위의 정수로 이루어진 RGB 또는 RGBW 튜플입니다.

__len__() int

스트립에 있는 LED의 개수를 반환합니다.

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

index 위치의 픽셀을 RGB 또는 RGBW 튜플인 val로 설정합니다. 데이터는 버퍼링만 되며, 스트립으로 보내려면 write()를 호출하십시오.

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

로컬 버퍼에서 index 위치의 픽셀을 사용자 대상 채널 순서의 RGB 또는 RGBW 튜플로 반환합니다.

write() None

machine.bitstream()을 사용하여 버퍼링된 픽셀 데이터를 스트립으로 전송합니다.