Espruino:Справочник по API/Библиотека neopixel/write(): различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 7: | Строка 7: | ||
==Синтаксис== | ==Синтаксис== | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
require("neopixel").write(pin, data) | require("neopixel").write(pin, data) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 22: | Строка 22: | ||
==Описание== | ==Описание== | ||
Записывает данные в полосу | Записывает данные в полосу [[светодиод]]ов [[NeoPixel]], [[WS281x]], [[APA104]], [[APA106]] или [[SK6812]], подключенную к заданному контакту. | ||
=== Пример 1: === | === Пример 1: === | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
// задаем цвет только одного пикселя, | // задаем цвет только одного пикселя, | ||
// используя значения красного, зеленого и синего цветов: | // используя значения красного, зеленого и синего цветов: | ||
Строка 34: | Строка 34: | ||
=== Пример 2: === | === Пример 2: === | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
// делаем анимированную радугу при помощи 25 светодиодов: | // делаем анимированную радугу при помощи 25 светодиодов: | ||
var rgb = new Uint8ClampedArray(25*3); | var rgb = new Uint8ClampedArray(25*3); | ||
Строка 52: | Строка 52: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{Примечание1| | |||
* У разных типов светодиодов цвета задаются в разном порядке. Так что не удивляйтесь, если вместо RGB-порядка где-то встретите BGR-порядок. | * У разных типов светодиодов цвета задаются в разном порядке. Так что не удивляйтесь, если вместо RGB-порядка где-то встретите BGR-порядок. | ||
* У некоторых светодиодных полос (например, у SK6812) на каждый светодиод приходится по 4 байта (для значений красного, зеленого, синего и белого цветов). Это по-прежнему поддерживается, но размер массива в аргументе data все же должен составлять 3 байта. Просто укоротите его – это не должно вызвать никаких проблем. | * У некоторых светодиодных полос (например, у [[SK6812]]) на каждый светодиод приходится по 4 байта (для значений красного, зеленого, синего и белого цветов). Это по-прежнему поддерживается, но размер массива в аргументе data все же должен составлять 3 байта. Просто укоротите его – это не должно вызвать никаких проблем. | ||
* На некоторых платформах (вроде STM32) требуются контакты, поддерживающие аппаратный SPI MOSI. | * На некоторых платформах (вроде [[STM32]]) требуются контакты, поддерживающие аппаратный SPI MOSI. | ||
* Если контакты ввода/вывода на Espruino работают на 3.3 вольтах, то на WS2812 и т.д. – на 5 вольтах. Многие WS2812 зарегистрируют единицу только на 70% от входного напряжения, так что 3.3-вольтовое соединение не позволит обеспечить надежную отправку данных. Эту проблему можно обойти, подключив к светодиодам чуть более высокое напряжение (например, 3.7 вольт от литий-полимерной батареи), переведя выходной контакт в состояние af_opendrain и воспользовавшись подтягивающим резистором, чтобы поднять напряжение до 5 вольт (это вариант для STM32-систем; nRF52 не устойчив к 5 вольтам, так что на нем этот метод применить не получится), или воспользовавшись транслятором уровня напряжения, чтобы сделать диапазон напряжения 5-вольтовым. | * Если контакты ввода/вывода на [[Espruino]] работают на 3.3 вольтах, то на WS2812 и т.д. – на 5 вольтах. Многие [[WS2812]] зарегистрируют единицу только на 70% от входного напряжения, так что 3.3-вольтовое соединение не позволит обеспечить надежную отправку данных. Эту проблему можно обойти, подключив к светодиодам чуть более высокое напряжение (например, 3.7 вольт от литий-полимерной батареи), переведя выходной контакт в состояние af_opendrain и воспользовавшись подтягивающим резистором, чтобы поднять напряжение до 5 вольт (это вариант для STM32-систем; nRF52 не устойчив к 5 вольтам, так что на нем этот метод применить не получится), или воспользовавшись транслятором уровня напряжения, чтобы сделать диапазон напряжения 5-вольтовым. | ||
}} | |||
== Примеры == | == Примеры == | ||
Строка 65: | Строка 65: | ||
=См.также= | =См.также= | ||
=Внешние ссылки= | =Внешние ссылки= | ||
Строка 71: | Строка 71: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Espruino | {{Навигационная таблица/Портал/Espruino}} | ||
Текущая версия от 17:56, 28 мая 2023
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Функция 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);
Примеры
См.также
Внешние ссылки