MicroPython:Платы/ESP8266/Руководство по MicroPython для ESP8266/Управление устройствами NeoPixel: различия между версиями
Myagkij (обсуждение | вклад) |
Нет описания правки |
||
Строка 9: | Строка 9: | ||
Чтобы создать объект [[NeoPixel]], впишите следующее: | Чтобы создать объект [[NeoPixel]], впишите следующее: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
>>> import machine, neopixel | >>> import machine, neopixel | ||
>>> np = neopixel.NeoPixel(machine.Pin(4), 8) | >>> np = neopixel.NeoPixel(machine.Pin(4), 8) | ||
Строка 18: | Строка 18: | ||
Чтобы задать цвет пикселей, используйте: | Чтобы задать цвет пикселей, используйте: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
>>> np[0] = (255, 0, 0) # красный, полная яркость | >>> np[0] = (255, 0, 0) # красный, полная яркость | ||
>>> np[1] = (0, 128, 0) # зеленый, половина яркости | >>> np[1] = (0, 128, 0) # зеленый, половина яркости | ||
Строка 26: | Строка 26: | ||
Для [[светодиод]]ов, у которых более 3 цветов – вроде RGBW-пикселей или RGBY-пикселей – у класса NeoPixel есть параметр bpp. Чтобы настроить объект NeoPixel для использования RGBW-пикселя, выполните следующее: | Для [[светодиод]]ов, у которых более 3 цветов – вроде RGBW-пикселей или RGBY-пикселей – у класса NeoPixel есть параметр bpp. Чтобы настроить объект NeoPixel для использования RGBW-пикселя, выполните следующее: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
>>> import machine, neopixel | >>> import machine, neopixel | ||
>>> np = neopixel.NeoPixel(machine.Pin(4), 8, bpp=4) | >>> np = neopixel.NeoPixel(machine.Pin(4), 8, bpp=4) | ||
Строка 33: | Строка 33: | ||
Работая в режиме с четырьмя каналами, не забывайте, что вам теперь, чтобы задать цвет, нужно указывать не три значения, как раньше, а четыре. Например, чтобы задать цвет и яркость первых трех пикселей, используйте: | Работая в режиме с четырьмя каналами, не забывайте, что вам теперь, чтобы задать цвет, нужно указывать не три значения, как раньше, а четыре. Например, чтобы задать цвет и яркость первых трех пикселей, используйте: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
>>> np[0] = (255, 0, 0, 128) # в RGBY-режиме это оранжевый | >>> np[0] = (255, 0, 0, 128) # в RGBY-режиме это оранжевый | ||
>>> np[1] = (0, 255, 0, 128) # в RGBY-режиме это желто-зеленый | >>> np[1] = (0, 255, 0, 128) # в RGBY-режиме это желто-зеленый | ||
Строка 41: | Строка 41: | ||
Затем используйте метод write(), чтобы отправить эти данные светодиодам: | Затем используйте метод write(), чтобы отправить эти данные светодиодам: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
>>> np.write() | >>> np.write() | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 47: | Строка 47: | ||
Функция demo() ниже выполняет интересный световой эффект с помощью этих светодиодов: | Функция demo() ниже выполняет интересный световой эффект с помощью этих светодиодов: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
import time | import time | ||
Строка 90: | Строка 90: | ||
Чтобы запустить эту функцию, используйте: | Чтобы запустить эту функцию, используйте: | ||
<syntaxhighlight lang="python | <syntaxhighlight lang="python"> | ||
>>> demo(np) | >>> demo(np) | ||
</syntaxhighlight> | </syntaxhighlight> |
Текущая версия от 20:05, 23 мая 2023
Управление устройствами NeoPixel[1]
Устройства NeoPixel (также известные как светодиоды WS2812) – это полноцветные светодиоды, у которых значения красного, зеленого и синего компонентов можно задать в диапазоне между «0» и «255». Кроме того, вы можете обратиться к каждому NeoPixel индивидуально, а их подключение выполняется последовательно.
Чтобы создать объект NeoPixel, впишите следующее:
>>> import machine, neopixel
>>> np = neopixel.NeoPixel(machine.Pin(4), 8)
Это настроит ESP8266 на использование NeoPixel-полосы из 8 пикселей на контакте GPIO4. То есть здесь «4» – это номер контакта, а «8» – это количество пикселей; вы можете подредактировать эти значения, чтобы они соответствовали вашей ситуации.
Чтобы задать цвет пикселей, используйте:
>>> np[0] = (255, 0, 0) # красный, полная яркость
>>> np[1] = (0, 128, 0) # зеленый, половина яркости
>>> np[2] = (0, 0, 64) # синий, четверть яркости
Для светодиодов, у которых более 3 цветов – вроде RGBW-пикселей или RGBY-пикселей – у класса NeoPixel есть параметр bpp. Чтобы настроить объект NeoPixel для использования RGBW-пикселя, выполните следующее:
>>> import machine, neopixel
>>> np = neopixel.NeoPixel(machine.Pin(4), 8, bpp=4)
Работая в режиме с четырьмя каналами, не забывайте, что вам теперь, чтобы задать цвет, нужно указывать не три значения, как раньше, а четыре. Например, чтобы задать цвет и яркость первых трех пикселей, используйте:
>>> np[0] = (255, 0, 0, 128) # в RGBY-режиме это оранжевый
>>> np[1] = (0, 255, 0, 128) # в RGBY-режиме это желто-зеленый
>>> np[2] = (0, 0, 255, 128) # в RGBY-режиме это зелено-синий
Затем используйте метод write(), чтобы отправить эти данные светодиодам:
>>> np.write()
Функция demo() ниже выполняет интересный световой эффект с помощью этих светодиодов:
import time
def demo(np):
n = np.n
# цикл:
for i in range(4 * n):
for j in range(n):
np[j] = (0, 0, 0)
np[i % n] = (255, 255, 255)
np.write()
time.sleep_ms(25)
# скачки:
for i in range(4 * n):
for j in range(n):
np[j] = (0, 0, 128)
if (i // n) % 2 == 0:
np[i % n] = (0, 0, 0)
else:
np[n - 1 - (i % n)] = (0, 0, 0)
np.write()
time.sleep_ms(60)
# увеличение/уменьшение яркости:
for i in range(0, 4 * 256, 8):
for j in range(n):
if (i // 256) % 2 == 0:
val = i & 0xff
else:
val = 255 - (i & 0xff)
np[j] = (val, 0, 0)
np.write()
# сброс:
for i in range(n):
np[i] = (0, 0, 0)
np.write()
Чтобы запустить эту функцию, используйте:
>>> demo(np)