Espruino:Справочник по API/Библиотека neopixel/write(): различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) (Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= ==Синтакс...») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=<ref>[ www.espruino.com - ]</ref>= | =Функция neopixel.write()<ref>[https://www.espruino.com/Reference#t_l_neopixel_write www.espruino.com - neopixel.write]</ref>= | ||
==Синтаксис== | ==Синтаксис== | ||
<syntaxhighlight lang="javascript" | <syntaxhighlight lang="javascript"> | ||
require("neopixel").write(pin, data) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==Параметры== | ==Параметры== | ||
* '''pin''' – контакт, к которому подключены светодиоды | |||
* '''data''' – данные, которые надо передать светодиодной полосе (это должен быть массив размером в 3 байта) | |||
==Возвращаемое значение== | ==Возвращаемое значение== | ||
Строка 21: | Строка 22: | ||
==Описание== | ==Описание== | ||
Записывает данные в полосу [[светодиод]]ов [[NeoPixel]], [[WS281x]], [[APA104]], [[APA106]] или [[SK6812]], подключенную к заданному контакту. | |||
=== Пример 1: === | |||
<syntaxhighlight lang="javascript"> | |||
// задаем цвет только одного пикселя, | |||
// используя значения красного, зеленого и синего цветов: | |||
require("neopixel").write(B15, [255,0,0]); | |||
</syntaxhighlight> | |||
=== Пример 2: === | |||
<syntaxhighlight lang="javascript"> | |||
// делаем анимированную радугу при помощи 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); | |||
</syntaxhighlight> | |||
{{Примечание1| | |||
* У разных типов светодиодов цвета задаются в разном порядке. Так что не удивляйтесь, если вместо 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-вольтовым. | |||
}} | |||
== Примеры == | == Примеры == | ||
Строка 29: | Строка 65: | ||
=См.также= | =См.также= | ||
=Внешние ссылки= | =Внешние ссылки= | ||
Строка 35: | Строка 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);
Примеры
См.также
Внешние ссылки