Espruino:Справочник по API/Библиотека neopixel/write(): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= ==Синтакс...»)
 
Нет описания правки
 
(не показаны 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" enclose="div">
<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:
=См.также=
=См.также=


{{ads}}
 


=Внешние ссылки=
=Внешние ссылки=
Строка 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);
Примечание
  • У разных типов светодиодов цвета задаются в разном порядке. Так что не удивляйтесь, если вместо 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-вольтовым.

Примеры

См.также

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