neopixel --- ควบคุม LED แบบ WS2812 / NeoPixel¶
โมดูลนี้ให้ไดรเวอร์สำหรับแถบ LED แบบ WS2812 / NeoPixel ไดรเวอร์ใช้ machine.bitstream() เพื่อสร้างสัญญาณที่มีจังหวะเวลาแม่นยำตามที่ LED ต้องการ ดังนั้นจึงทำงานได้บนทุกพอร์ตที่โมดูล machine ของพอร์ตนั้นรองรับ bitstream
แอปพลิเคชันกำหนดข้อมูลพิกเซลผ่านการกำหนดค่าด้วยดัชนีหรือ NeoPixel.fill() แล้วจึงเรียก NeoPixel.write() เพื่ออัปเดตแถบ LED แต่ละพิกเซลถูกแสดงเป็น 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สำหรับแถบ LED ที่เชื่อมต่อกับ pinpin คืออินสแตนซ์
machine.Pinซึ่งจะถูกกำหนดค่าใหม่เป็นเอาต์พุตโดยคอนสตรัคเตอร์n คือจำนวน LED ในแถบ
bpp คือจำนวนไบต์ต่อพิกเซล:
3สำหรับ LED แบบ RGB (เช่น WS2812) และ4สำหรับ LED แบบ RGBW (เช่น SK6812-RGBW)timing เลือกจังหวะเวลาของบิต
0เลือกจังหวะช้าที่ 400 kHz และ1เลือกจังหวะมาตรฐาน 800 kHz ที่ใช้กับแถบส่วนใหญ่ในปัจจุบัน นอกจากนี้ยังสามารถส่ง 4-tuple(high_0, low_0, high_1, low_1)ของระยะเวลาในหน่วยนาโนวินาทีแทนได้ ในรูปแบบที่machine.bitstream()รับ
- ORDER: tuple[int, int, int, int]¶
แอตทริบิวต์ของคลาสที่แมปลำดับช่องสัญญาณที่ผู้ใช้เห็นไปยังลำดับสาย ค่าเริ่มต้นคือ
(1, 0, 2, 3)กล่าวคือ tuple(R, G, B[, W])ที่ผู้ใช้ส่งมาจะถูกส่งออกเป็นG R B [W]คลาสย่อยอาจแทนที่ORDERเพื่อรองรับแถบที่มีลำดับสายต่างออกไป
- fill(pixel: tuple[int, ...]) None¶
กำหนดทุกพิกเซลในแถบให้เป็น pixel ซึ่งเป็น tuple แบบ RGB หรือ RGBW ของจำนวนเต็มในช่วง
0-255
- __setitem__(index: int, val: tuple[int, ...]) None¶
กำหนดพิกเซลที่ตำแหน่ง index ให้เป็น val ซึ่งเป็น tuple แบบ RGB หรือ RGBW ข้อมูลจะถูกเก็บในบัฟเฟอร์เท่านั้น เรียก
write()เพื่อส่งไปยังแถบ
- __getitem__(index: int) tuple[int, ...]¶
คืนค่าพิกเซลที่ตำแหน่ง index จากบัฟเฟอร์ในเครื่องในรูปแบบ tuple แบบ RGB หรือ RGBW ตามลำดับช่องสัญญาณที่ผู้ใช้เห็น
- write() None¶
ส่งข้อมูลพิกเซลที่เก็บในบัฟเฟอร์ไปยังแถบโดยใช้
machine.bitstream()