neopixel — WS2812 / NeoPixel LED’lerinin kontrolü

Bu modül, WS2812 / NeoPixel LED şeritleri için bir sürücü sağlar. Sürücü, LED’lerin beklediği hassas zamanlamalı sinyali üretmek için machine.bitstream() fonksiyonuna dayanır; bu nedenle machine modülü bitstream uygulayan herhangi bir portta çalışır.

Uygulama, piksel verilerini öğe ataması yoluyla veya NeoPixel.fill() ile ayarlar ve ardından şeridi güncellemek için NeoPixel.write() çağrısını yapar. Her piksel, kullanıcının kabul ettiği sırada bir RGB veya RGBW demeti olarak sunulur; sürücü, GRB(W) kablo sırasını dahili olarak yönetir.

Örnek:

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 pinine bağlı bir LED şeridi için bir NeoPixel nesnesi oluşturur.

  • pin bir machine.Pin örneğidir; kurucu tarafından çıkış olarak yeniden yapılandırılır.

  • n şeritteki LED sayısıdır.

  • bpp piksel başına bayt sayısıdır: RGB LED’ler (WS2812 gibi) için 3 ve RGBW LED’ler (SK6812-RGBW gibi) için 4.

  • timing bit zamanlamasını seçer. 0 yavaş 400 kHz zamanlamasını, 1 çoğu modern şeridin kullandığı standart 800 kHz zamanlamasını seçer. Bunun yerine, machine.bitstream() tarafından kabul edilen biçimde, nanosaniye sürelerinden oluşan bir 4’lü demet (high_0, low_0, high_1, low_1) geçirilebilir.

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

Kullanıcıya yönelik kanal sırasını kablo sırasına eşleyen sınıf özniteliği. Varsayılan olarak (1, 0, 2, 3) değerini alır; yani kullanıcının sağladığı (R, G, B[, W]) demetleri G R B [W] olarak iletilir. Alt sınıflar, farklı bir kablo sırasına sahip şeritleri desteklemek için ORDER değerini geçersiz kılabilir.

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

Şeritteki her pikseli, 0-255 aralığında tam sayılardan oluşan bir RGB veya RGBW demeti olan pixel değerine ayarlar.

__len__() int

Şeritteki LED sayısını döndürür.

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

index konumundaki pikseli, bir RGB veya RGBW demeti olan val değerine ayarlar. Veri yalnızca arabelleğe alınır; şeride göndermek için write() çağrısını yapın.

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

Yerel arabellekten index konumundaki pikseli, kullanıcıya yönelik kanal sırasında bir RGB veya RGBW demeti olarak döndürür.

write() None

Arabelleğe alınmış piksel verilerini machine.bitstream() kullanarak şeride iletir.