Espruino:Справочник по API/Библиотека neopixel/write()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция neopixel.write()[1]

Синтаксис

require("neopixel").write(pin, data)

Параметры

  • pin – контакт, к которому подключены светодиоды
  • data – данные, которые надо передать светодиодной полосе (это должен быть массив размером в 3 байта)

Возвращаемое значение

Описание

Записывает данные в полосу светодиодов NeoPixel, WS281x, APA104, APA106 или SK6812, подключенную к заданному контакту.

Пример 1:

// задаем цвет только одного пикселя,
// используя значения красного, зеленого и синего цветов:
require("neopixel").write(B15, [255,0,0]);

Пример 2:

// делаем анимированную радугу при помощи 25 светодиодов:
var rgb = new Uint8ClampedArray(25*3);
var pos = 0;
function getPattern() {
  pos++;
  for (var i=0;i<rgb.length;) {
    rgb[i++] = (1 + Math.sin((i+pos)*0.1324)) * 127;
    rgb[i++] = (1 + Math.sin((i+pos)*0.1654)) * 127;
    rgb[i++] = (1 + Math.sin((i+pos)*0.1)) * 127;
  }
  return rgb;
}
setInterval(function() {
  require("neopixel").write(B15, getPattern());
}, 100);
Примечание
  • У разных типов светодиодов цвета задаются в разном порядке. Так что не удивляйтесь, если вместо RGB-порядка где-то встретите BGR-порядок.
  • У некоторых светодиодных полос (например, у SK6812) на каждый светодиод приходится по 4 байта (для значений красного, зеленого, синего и белого цветов). Это по-прежнему поддерживается, но размер массива в аргументе data все же должен составлять 3 байта. Просто укоротите его – это не должно вызвать никаких проблем.
  • На некоторых платформах (вроде STM32) требуются контакты, поддерживающие аппаратный SPI MOSI.
  • Если контакты ввода/вывода на Espruino работают на 3.3 вольтах, то на WS2812 и т.д. – на 5 вольтах. Многие WS2812 зарегистрируют единицу только на 70% от входного напряжения, так что 3.3-вольтовое соединение не позволит обеспечить надежную отправку данных. Эту проблему можно обойти, подключив к светодиодам чуть более высокое напряжение (например, 3.7 вольт от литий-полимерной батареи), переведя выходной контакт в состояние af_opendrain и воспользовавшись подтягивающим резистором, чтобы поднять напряжение до 5 вольт (это вариант для STM32-систем; nRF52 не устойчив к 5 вольтам, так что на нем этот метод применить не получится), или воспользовавшись транслятором уровня напряжения, чтобы сделать диапазон напряжения 5-вольтовым.

Примеры

См.также

Внешние ссылки