NeoPixel (Адресная светодиодная лента)
Модуль «neopixel» позволяет использовать NeoPixel (WS2812) с индивидуальной адресацией.
Обратите внимание, чтобы использовать модуль neopixel
, Вам нужно импортировать его отдельно:
import neopixel
Примечание
Судя по нашим тестам, модуль Microbit NeoPixel поддерживает до 256 светодиодов. Micro:bit может подавать только 90 мА V1 или 190 мА V2 на внешние устройства, большое количество светодиодов требует внешнего источника питания.
NeoPixel рассчитаны на работу при напряжении 5 В, но, к счастью, они по-прежнему работают при источник питания 3В от BBC micro:bit.
Image attribution: adafruit flexible Neopixel matrix <https://www.adafruit.com/product/2547>
Чтобы соединить ленту светодиодов, вам нужно присоеденить micro:bit, как показано на рисунке. ниже (при условии, что Вы хотите управлять пикселями с контакта 0). Вывод VDD может быть помечен как-то еще на некоторых вариантах «V+». В некоторых случаях он может называться «+5V», и его безопасно использовать только в том случае, если у вас нет других устройств 5V подключеных к Microbit.
Предупреждение
Не используйте разъем 3 В на Microbit для питания более 8 светодиодов за раз. Если вы хотите использовать более 8, вы должны использовать отдельный разъем 3v-5v. Желательно иметь блок питания для светодиодной ленты.
Класс
- class neopixel.NeoPixel(pin, n)
- class neopixel.NeoPixel(pin, n, bpp)
Создать новый обект ленты с
n
светодиодами, подключенную к контактуpin
. Microbit V2 также поддерживает светодиоды RGBW, поэтому третий аргумент может передаватьNeoPixel
количество байтов на пиксель (bpp). Для RGBW это4
а не по умолчанию3
за RGB и GRB.Каждый пиксель адресуется по положению (начиная с 0). Неопиксели RGB (красный, зеленый, синий) / RGBW (красный, зеленый, синий, белый) V2 значения от 0 до 255 в виде кортежа. Например, в RGB,
(255,255,255)
. Вариант RGBW,(255,255,255,0)
или(0,0,0,255)
- белый цвет.- clear()
Очистить все пиксели.
- show()
- write()
- Включить светодиоды. Вызывается, чтобы любые обновления стали видимыми.
Для micro:bit V2 есть дополнительная команда``write()`` метод доступен и эквивалентен
show()
- fill(colour)
V2 Включает светодиоды заданным значением RGB/RGBW. Параметр colour должен быть кортеж той же длины, что и количество байтов на пиксель (бпп). Например
fill((0,0,255))
. Используйте вместе сshow()
, чтобы обновить состояние.
Команды
Запись цвета не обновляет дисплей (используйте show()
для этого).
np[0] = (255, 0, 128) # первый светодиод
np[-1] = (0, 255, 0) # последний светодиод
np.show() # только после этой команды они поменяют цвет
Чтобы проверить цвет светодиода (созданного как список) Вызовите команду print
.
print(np[0])
Использование Neopixels
Взаимодействуйте с лентой и библиотекой Neopixels, как со списком кортежей. Каждый кортеж представляет смесь цветов RGB (красный, зеленый и синий) / RGBW (красный, зеленый, синий и белый) для конкретного светодиода. Значения RGBW могут варьироваться от 0 до 255..
Например, инициализируйте полосу из 8 светодиодов RGB на полосе, подключенной к контакту 0:
import neopixel
np = neopixel.NeoPixel(pin0, 8)
Установите светодиоды, индексируя их (как со списком Python). Например, чтобы установить первый светодиод на полную яркость красного цвета:
np[0] = (255, 0, 0)
Или последний светодиод в фиолетовый:
np[-1] = (255, 0, 255)
Наконец, чтобы передать новые данные о цвете, используйте метод .show():
np.show()
Примечание
Если вы не видите никаких изменений на ленте, убедитесь, что у вас есть show()
Примеры
"""
Повторно отображает случайные цвета на светодиодной ленте.
"""
from random import randint
import neopixel
from microbit import pin0, sleep
# Установите длину ленты
np = neopixel.NeoPixel(pin0, 8)
while True:
# Включение ленты
for pixel_id in range(0, len(np)):
red = randint(0, 60)
green = randint(0, 60)
blue = randint(0, 60)
# Назначьте текущему светодиоду случайное значение красного, зеленого и синего цветов от 0 до 60
np[pixel_id] = (red, green, blue)
# Отображение светодиодов
np.show()
sleep(100)