neopixel --- التحكم في مصابيح WS2812 / NeoPixel LEDs

توفّر هذه الوحدة مشغّلاً لشرائط مصابيح WS2812 / NeoPixel LED. يعتمد المشغّل على machine.bitstream() لتوليد الإشارة الدقيقة التوقيت التي تتوقعها المصابيح، لذا فهو يعمل على أي منفذ تطبّق فيه الوحدة machine الدالة bitstream.

يضبط التطبيق بيانات البكسل عبر إسناد العناصر أو NeoPixel.fill() ثم يستدعي NeoPixel.write() لتحديث الشريط. يُعرَض كل بكسل على هيئة صف (tuple) من نوع 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)

أنشئ كائن NeoPixel لشريط من المصابيح المتصل بـ pin.

  • pin هو نسخة من machine.Pin؛ وسيُعاد ضبطه كخرج بواسطة المُنشئ.

  • n هو عدد المصابيح في الشريط.

  • bpp هو عدد البايتات لكل بكسل: 3 لمصابيح RGB (مثل WS2812) و 4 لمصابيح RGBW (مثل SK6812-RGBW).

  • timing يحدد توقيت البتات. تختار القيمة 0 التوقيت البطيء 400 kHz، وتختار 1 التوقيت القياسي 800 kHz المستخدم في معظم الشرائط الحديثة. ويمكن بدلاً من ذلك تمرير صف رباعي (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، وهو صف من نوع RGB أو RGBW من أعداد صحيحة في النطاق 0-255.

__len__() int

أرجع عدد المصابيح في الشريط.

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

اضبط البكسل عند index على val، وهو صف من نوع RGB أو RGBW. تُخزَّن البيانات في المخزن المؤقت فقط؛ استدعِ write() لدفعها إلى الشريط.

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

أرجع البكسل عند index من المخزن المؤقت المحلي على هيئة صف من نوع RGB أو RGBW بترتيب القنوات الموجَّه للمستخدم.

write() None

أرسل بيانات البكسل المخزَّنة مؤقتاً إلى الشريط باستخدام machine.bitstream().