NeoPixel (Адресная светодиодная лента)

Модуль «neopixel» позволяет использовать NeoPixel (WS2812) с индивидуальной адресацией. Обратите внимание, чтобы использовать модуль neopixel, Вам нужно импортировать его отдельно:

import neopixel

Примечание

Судя по нашим тестам, модуль Microbit NeoPixel поддерживает до 256 светодиодов. Micro:bit может подавать только 90 мА V1 или 190 мА V2 на внешние устройства, большое количество светодиодов требует внешнего источника питания.

NeoPixel рассчитаны на работу при напряжении 5 В, но, к счастью, они по-прежнему работают при источник питания 3В от BBC micro:bit.

Neopixel flexible tile

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. Желательно иметь блок питания для светодиодной ленты.

../_images/neopixel-croc.png

Класс

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)