Добавляем светодиод
Давайте подключим светодиод который будет загораться при нажатии на нашу кнопку. Сделать это очень просто. Достаточно подключить анод светодиода (длинная ножка) в порт “13”. Далее в программе мы будем включать светодиод просто подавая 5 вольт на этот порт. Катод светодиода (короткая ножка) подключаем на землю через разъём “GND”. Но не забываем про резистор, так как 5 вольт для одного светодиода слишком много и светодиод может перегореть.
Что бы правильно подобрать резистор с нужным нам сопротивлением можно воспользоваться специальной таблицей:
Цветовая характеристика светодиода |
Напряжение |
Инфракрасный |
до 1.9 В |
Красный |
от 1.6 до 2.03 В |
Оранжевый |
от 2.03 до 2.1 В |
Желтый |
от 2.1 до 2.2 В |
Зелёный |
от 2.2 до 3.5 В |
Синий |
от 2.5 до 3.7 В |
Фиолетовый |
от 2.8 до 4 В |
Ультрафиолетовый |
от 3.1 до 4.4 В |
Белый |
от 3 до 3.7 В |
Рассчитать необходимое сопротивление резистора можно по следующей формуле:
R=(Uист-Uд)/Iд, где Uист – напряжение источника питания, Uд – напряжение диода, Iд – ток диода (обычный светодиод потребляет около 20 миллиампер).
Пример рассчёта для красного светодиода:
Принцип управления нагрузкой через Ардуино
Плата Ардуино имеет два типа портов вывода: цифровой и аналоговый (ШИМ-контроллер). У цифрового порта возможно два состояния – логический ноль и логическая единица. Если подключить к нему светодиод он либо будет светиться, либо не будет.
Аналоговый выход представляет собой ШИМ-контроллер, на который подаётся сигнал частотой около 500Гц с регулируемой скважностью. Что такое ШИМ-контроллер и принцип его работы можно найти в интернете
Через аналоговый порт возможно не только включать и выключать нагрузку, а и изменять напряжение (ток) на ней.
Синтаксис команд
Цифровой вывод:
pinMode(12, OUTPUT); — задаём порт 12 портом вывода данных; digitalWrite(12, HIGH); — подаём на дискретный выход 12 логическую единицу, зажигая светодиод.
Аналоговый вывод:
analogOutPin = 3; – задаём порт 3 для вывода аналогового значения; analogWrite(3, значение); – формируем на выходе сигнал с напряжением от 0 до 5В
Значение – скважность сигнала от 0 до 255. При значении 255 максимальное напряжение
Способы управления светодиодами через Ардуино
Напрямую через порт можно подключить лишь слабый светодиод, да и то лучше через ограничительный резистор. Попытка подключить более мощную нагрузку выведет его из строя.
Для более мощных нагрузок, в том числе светодиодных лент, используют электронный ключ – транзистор.
Список необходимого
- Мозг устройства – Ардуино Нано – 1 шт. — 150 р.
- Датчик движения — HC-SR505 – 1 шт. — 60 р.
- Сенсорная кнопка TTP-223 – 1 шт. — 20 р.
- Транзистор IRF-3205 — 3 шт. -150 р.
- Резистор 10 К 0,25 Вт – 3 шт. – 6 р.
- Резистор 20 Ом 0,25 Вт – 3 шт. – 6 р.
- Макетная плата под пайку размерами 90х50 мм – 1 шт. 100 р.
- Корпус 100х60 — 1 шт. 60 руб.
Итого 14 деталей на общую сумму примерно 600 рублей + сама светодиодная RGB лента в зависимости от формата планируемой подсветки.
Всё, кроме транзисторов и резисторов дешевле купить в Китае, а вот транзисторы лучше купить в наших магазинах. Китайцы иногда присылают откровенный шлак под видом транзисторов, а резисторы продают большим количеством, хоть и довольно дёшево.
Светодиодная лента Ардуино – написание кода.
Подключите плату Arduino к компьютеру через USB и откройте Arduino IDE. Убедитесь, что у вас правильный номер платы и порта, выбранный для вашей платы, в меню «Сервис»> «Сервис и инструменты»> «Порт». Откройте новый эскиз и сохраните его с соответствующим именем. Этот эскиз затухает с одноцветными огнями, держит их в таком состоянии в течение нескольких секунд, а затем исчезает, пока они не погаснут снова.
Вы можете сделать эскиз самостоятельно или просто загрузить готовый код из GitHub (https://gist.github.com/anonymous/d4fa3719478c3c5a9c321cc372e9540).
Начните с определения штырей, которые будут использоваться для управления МОП-транзисторами.
#define RED_LED 6 #define BLUE_LED 5 #define GREEN_LED 9
Затем вам понадобятся переменные. Создайте общую переменную яркости вместе с переменной для яркости каждого цвета. Мы будем использовать только основную переменную яркости для выключения светодиодов, поэтому установите здесь максимальное значение 255. Вам также потребуется создать переменную, чтобы контролировать скорость замирания.
int brightness = 255; int gBright = 0; int rBright = 0; int bBright = 0; int fadeSpeed = 10;
В вашей настройке мы установим выводы Arduino. Мы также будем вызывать пару функций с задержкой в 5 секунд. Этих функций еще не существует, но не беспокойтесь, мы доберемся до них.
void setup() { pinMode(GREEN_LED, OUTPUT); pinMode(RED_LED, OUTPUT); pinMode(BLUE_LED, OUTPUT);
TurnOn(); delay(5000); TurnOff(); } Теперь создайте метод TurnOn (): void TurnOn() { for (int i = 0; i < 256; i++) { analogWrite(RED_LED, rBright); rBright +=1; delay(fadeSpeed); } for (int i = 0; i < 256; i++) { analogWrite(BLUE_LED, bBright); bBright += 1; delay(fadeSpeed); } for (int i = 0; i < 256; i++) { analogWrite(GREEN_LED, gBright); gBright +=1; delay(fadeSpeed); } }
Эти три цикла for полностью увеличивают яркость каждого цвета за время, указанное значением fadeSpeed. Наконец, вам нужно создать метод TurnOff (): void TurnOff() { for (int i = 0; i < 256; i++) { analogWrite(GREEN_LED, brightness); analogWrite(RED_LED, brightness); analogWrite(BLUE_LED, brightness); brightness -= 1; delay(fadeSpeed); }}void loop() {} Этот метод применяет нашу переменную яркости ко всем трем цветным выводам и уменьшает их до нуля в течение определенного периода времени. Нам также нужен метод пустого цикла, чтобы избежать ошибок компиляции.
Закончив этот код, сохраните его. Проверьте код и загрузите на плату Arduino. Если вы видите ошибки, проверьте код снова на предмет каких-либо опечаток или отсутствующих точек с запятой.
Плавное включение светодиодной ленты на Ардуино
Теперь вы должны увидеть, что ваша светодиодная лента Ардуино наращивает яркость, удерживая белый оттенок в течение 5 секунд, а затем равномерно исчезает до нуля:
Если у вас возникли трудности, дважды проверьте свою проводку и код.
Ардуино и адресная светодиодная лента
Этот проект – простой способ начать работу, но идеи, которые он охватывает, могут быть расширены для действительно эффектного освещения. С помощью всего лишь нескольких компонентов вы можете создать свой собственный восход солнца. Если у вас есть стартовый комплект с Arduino, вы можете использовать любую кнопку или датчик для запуска светодиодов при входе в комнату, например:
Теперь, когда мы рассмотрели схему с обычной светодиодной лентой, перейдем к адресным светодиодным лентам SPI RGB лента.
Светодиодная лента Ардуино – Яркие идеи.
Эти ленты требуют меньшего количества компонентов для запуска, и есть некоторая свобода в отношении именно того, какие значения компонентов вы можете использовать. Конденсатор в этой цепи гарантирует, что светодиоды 5v получают постоянный источник питания. Резистор становится гарантом того, что сигнал данных, полученный от Arduino, не загружен всяческими помехами.
Вам понадобится:
● Светодиодная лента 5v WS2811/12/12B; Все три модели имеют встроенные микросхемы и работают одинаково.
● 1 x Arduino Uno или аналогичная совместимая плата;
● 1 x резистор 220-440 Ом;
● 1 x конденсатор microFarad 100-1000 (все, что между этими двумя значениями, отлично подойдет);
● Макет и монтажные провода;
● Блок питания 5 В.
Настройте схему, как показано на рисунке:
Обратите внимание, что конденсатор должен быть правильной ориентации. Вы можете понять, какая сторона прикрепляется к рейке земля, ища знак минуса (-) на корпусе конденсатора
На этот раз мы задействуем Arduino, используя источник питания 5 В. Это позволит устройству работать автономно
Вы можете понять, какая сторона прикрепляется к рейке земля, ища знак минуса (-) на корпусе конденсатора. На этот раз мы задействуем Arduino, используя источник питания 5 В. Это позволит устройству работать автономно.
Во-первых, убедитесь, что ваша плата может работать с 5 В, прежде чем присоединить ее к источнику питания. Почти все платы работают на 5V через USB-порт, но штыри питания на некоторых могут иногда пропускать регуляторы напряжения и превращать их в поджаренные тосты.
Кроме того, рекомендуется убедиться, что несколько отдельных источников питания не подключены к Arduino – отсоединяйте USB-кабель всякий раз, когда используете внешний источник питания.
Светодиодная лента Ардуино – Бегущий огонь или световая волна
Чтобы безопасно запрограммировать нашу плату, отсоедините линию VIN от линии электропередач. Вы подключите ее позже обратно.
Присоедините свой Arduino к компьютеру и откройте Arduino IDE. Убедитесь, что у вас правильный номер платы и порта, выбранный в меню «Сервис»> «Сервис и инструменты»> «Порт».
Мы будем использовать библиотеку FastLED для тестирования нашей установки. Вы можете добавить библиотеку, нажав на Эскиз> Включить библиотеку> Управление библиотеками и поиск FastLED. Нажмите «Установить», и библиотека будет добавлена в среду IDE.
В разделе «Файл»> «Примеры»> «FastLED» выберите эскиз DemoReel100. В этом эскизе задействованы различные эффекты, которые можно сделать с помощью светодиодных полос WS2812, и невероятно легко настроить.
Все, что вам нужно изменить, — это переменная DATA_PIN, чтобы она соответствовала значку 13 и переменной NUM_LEDS для определения количества светодиодов, находящихся в полосе, которую вы используете. В этом случае я применяю только небольшую линию из 10 светодиодов, вырезанных из более длинной полосы.
Используйте большее количество для красивейшего светового шоу!
Загрузите эскиз на свою плату, отсоедините USB-кабель и включите источник питания 5 В.
Наконец, подключите VIN Arduino к линии электропередач и наслаждайтесь представлением.
Светодиодная лента Ардуино – Безграничные возможности
Демо-эскиз демонстрирует некоторые из многих возможных комбинаций эффектов, которые могут быть достигнуты с помощью светодиодных лент. Наряду с тем, что они являются украшением интерьера, их также можно использовать для практических целей. Хорошим проектом будет создание вашей собственной атмосферы для медиацентра или рабочего места.
Хотя эти полосы определенно функциональнее, чем SMD5050, пока не списывайте со счетов стандартные 12-вольтовые светодиодные полосы. Они являются непревзойденными с точки зрения цены. Плюсом будет то, что существует огромное количество приложений для светодиодных лент.
Учиться работать со светодиодными лентами — хороший способ познакомиться с базовым программированием на Arduino, но лучший способ учиться — изменять коды. Побалуйтесь с приведенным выше кодом и посмотрите, что вы можете сделать! Если все это слишком сложно для вас, подумайте о проектах Arduino для начинающих.
Как это работает
Адресная лента WS2812B поделена на сегменты, в каждом из которых расположен светодиод и конденсатор (для повышения помехоустойчивости). Относительно напряжения питания все они между собой подключены параллельно, то есть +5 В будет присутствовать на каждом сегменте. А вот передача данных осуществляется последовательно: от предыдущего сегмента к последующему. Поэтому при выходе из строя одного из светодиодов цепи все следующие сегменты перестанут светиться. Управление готовыми устройствами и модулями на базе WS2812.
B производится с помощью специализированного контроллера, внутри которого записана программа. На радиолюбительском уровне управлять работой адресной светодиодной ленты удобней всего через Arduino, используя для этого небольшую программу – скетч. Схема подключения к Arduino
У каждой адресной ленты есть начало и конец, которые нельзя менять местами во время сборки схемы. Чтобы не запутаться, производители используют условные обозначения, например, стрелки, указывающие направление сигнала. Подключение адресной светодиодной ленты WS2812B к Arduino производится по трём проводам, как показано на рисунке.Контакты питания +5V и GND соединяют с соответствующими выводами на плате Arduino.
Если подсоединяемый отрезок насчитывает более 13-ти светодиодов, то необходимо использовать выносной блок питания. При этом общий провод (GND) Arduino и «минус» блока питания должны быть соединены между собой. Контакт DIN (digital input) предназначен для приёма данных от контроллера и электрически соединяется с любым из его цифровых портов. С другой стороны адресной ленты (и каждого сегмента тоже) размещено 3 контакта: +5V, DO (digital output) и GND, к которым можно подключить ещё несколько отрезков разной длины.
Так как каждый элемент WS2812B фактически состоит из 3 светодиодов (синего, красного, зелёного), то для управления его свечением потребуется 3 байта (по одному на каждый цвет). В свою очередь, каждый байт может принимать значение от 0 до 255, в результате чего можно задать более 16,5 млн оттенков. Размер скетча будет равен количеству светодиодных сегментов, умноженному на 3. Передача данных происходит следующим образом: ШИМ-драйвер WS2812B первого сегмента забирает из посылки первые 3 байта, пропуская остальные данные на выход DO.
Далее следует пауза длиною до 50 мкс, означающая, что второй по счёту драйвер должен принять следующие 3 байта. И так далее. Длительность паузы больше 50 мкс означает конец передачи и повторение цикла. Для работы с адресными лентами и модулями проще всего использовать библиотеки FastLED и Adafruit NeoPixel. Внутри каждой библиотеки есть готовые скетчи, на основе которых несложно научиться самостоятельно создавать новые световые эффекты. Чтобы скетч заработал с первого раза, необходимо в заголовке правильно указать количество светодиодов в ленте (NUM_LEDS) и номер порта для передачи данных (PIN).
Адресные ленты стоят дороже обычных лент, и применяются обычно там, где простые ленты по какой-то причине не применимы: полноцветные модульные сборки, декоративная подсветка с управлением «soft light», наружная реклама и т. д. Особенность таких сборок в том, что они способны изменять и цвет и яркость отдельных своих сегментов по более сложному алгоритму, нежели простые LED-ленты, даже если эти LED-ленты оснащены умными драйверами. ШИМ-сигнал управления подается со специального запрограммированного контроллера на вход ленты, и передается последовательно на вход одного чипа (digital input – DI), выходит из него (digital output – DO), затем проходит через второй чип, и т. д. Управление легко осуществить при помощи программы на ардуино.
Светодиодная лента в блоком управления.
Различные программы
Библиотеки с программами для платы Arduino можно загрузить с официального сайта или найти в Интернете на других информационных ресурсах. Если есть навыки, можете даже самостоятельно написать скетч-программу (исходный код). Для сбора электрической цепи не требуется каких-то специфичных знаний.
Варианты применения системы под управлением Arduino:
- Освещение. Наличие датчика позволит задать программу, в соответствии с которой свет в комнате либо появляется сразу, либо плавно включается параллельно заходу солнца (с увеличением яркости). Для включения можно использовать Wi-Fi, телефон и интеграцию в систему «Умный дом».
- Освещение коридора и лестничных площадок. Arduino позволит организовать освещение каждой детали (к примеру, ступени) отдельно. Добавьте в плату датчик движения, чтобы адресные светодиоды загорались последовательно в зависимости от того места, где зафиксировано движение объекта. Если движения нет, диоды будут гаснуть.
- Светомузыка. Воспользуйтесь фильтрами и подайте на аналоговый вход звуковые сигналы, чтобы на выходе организовать светомузыку (эквалайзер).
- Модернизация компьютера. Некоторые датчики позволят создать зависимость цвета светодиодов от температуры процессора, его загрузки, нагрузки на оперативную память. Используется протокол DMX 512.
Микросхемы Arduino расширяют возможности применения монохромных и многоканальных (RGB) светодиодных лент. Помимо слияния различных цветов, образования сотен тысяч оттенков сможете создать неповторимые эффекты — затухание при заходе солнца, периодическое включение/выключение при фиксации движения и многое другое.
Исходный код программы
Arduino
void setup() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
}
void loop() {
digitalWrite(2, LOW);
delay(500);
digitalWrite(2, HIGH);
delay(500);
digitalWrite(3, LOW);
delay(500);
digitalWrite(3, HIGH);
delay(500);
digitalWrite(4, LOW);
delay(500);
digitalWrite(4, HIGH);
delay(500);
}
1 |
voidsetup(){ pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT); } voidloop(){ digitalWrite(2,LOW); delay(500); digitalWrite(2,HIGH); delay(500); digitalWrite(3,LOW); delay(500); digitalWrite(3,HIGH); delay(500); digitalWrite(4,LOW); delay(500); digitalWrite(4,HIGH); delay(500); } |
ДОКУМЕНТАЦИЯ
Список функций и методов библиотеки из файла .h
// объявление GRGB(uint8_t rpin, uint8_t gpin, uint8_t bpin); // объявление с выбором режима генерации ШИМ (NORM_PWM / ANY_PWM) // NORM_PWM — дефолтные ШИМ пины (3, 5, 6, 9, 10, 11 для UNO/NANO/MINI) // ANY_PWM — любой пин делается ШИМ пином (частота ~150 Гц). Подробности в библиотеке GyverHacks GRGB(uint8_t rpin, uint8_t gpin, uint8_t bpin, boolean pwmmode); // NORMAL / REVERSE — направление ШИМ // общий катод — NORMAL // общий анод — REVERSE void setDirection(boolean direction); // установка ограничения по току: // numLeds — количество светодиодов // vcc — напряжение питания в милливольтах // maxCur — максимальный ток void setMaxCurrent(uint16_t numLeds, float vcc, int maxCur); void setBrightness(byte bright); // установка яркости (0-255) void constantBrightTick(int minVolts, int vcc); // корректировка под напряжение питания void gammaTick(int vcc); // корректировка красного цвета при падении напряжения питания void setHEX(uint32_t color); // установка цвета в формате HEX (вида 0x808080 ) void setRGB(uint8_t r, uint8_t g, uint8_t b); // установка цвета в пространстве RGB (каждый цвет 0-255) void setHSV(uint8_t h, uint8_t s, uint8_t v); // установка цвета в пространстве HSV (каждая велиична 0-255) void setHSV_fast(uint8_t h, uint8_t s, uint8_t v); // более быстрый, но менее красивый вариант предыдущей функции void setKelvin(int16_t temperature); // установить цвет как температуру в Кельвинах (от 1000 до 10’000 — от красного к синему) void colorWheel(int color); // установить цвет (0 — 1530). Максимально широкая палитра ярких цветов (смеси RGB) // плавно изменить текущий цвет к новому за вермя fadeTime в миллисекундах // для HEX цвета void fadeTo(uint32_t newColor, uint16_t fadeTime); // для R G B void fadeTo(uint8_t new_r, uint8_t new_g, uint8_t new_b, uint16_t fadeTime);
Как подключить кнопку и светодиод к Ардуино
Для этого занятия нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- светодиод;
- 2 резистора 220 Ом;
- 2 тактовых кнопки;
- провода «папа-папа».
Схема для включения/выключения светодиода кнопкой от Ардуино
Для переключения светодиода кнопкой Ардуино соберите схему, как на изображении выше
Обратите внимание, что тактовая кнопка на макетной плате подключена к микроконтроллеру без подтягивающего резистора. Пин 2 подключен к 5V через встроенный резистор, поэтому при отпущенной кнопке на входе пине 2 будет высокий уровень сигнала, а при нажатии кнопки будет низкий уровень
Скетч. Управление светодиодом Ардуино через кнопку
boolean buttonWasUp = true; boolean ledEnabled = false; void setup() { pinMode(10, OUTPUT); pinMode(2, INPUT_PULLUP); } void loop() { // узнаем, отпущена ли кнопка сейчас boolean buttonIsUp = digitalRead(2); // если кнопка была отпущена и не отпущена сейчас if (buttonWasUp && !buttonIsUp) { // исключаем дребезг контактов тактовой кнопки delay(10); // и считываем сигнал с кнопки снова buttonIsUp = digitalRead(2); // если кнопка нажата, то переворачиваем сигнал светодиода if (!buttonIsUp) { ledEnabled = !ledEnabled; digitalWrite(10, ledEnabled); } } // запоминаем состояние кнопки для новой итерации buttonWasUp = buttonIsUp; }
Пояснения к коду:
- — это глобальная переменная Ардуино, которая может принимать всего два значения – true (истина) и false (ложь);
- задержка в программе позволяет избежать «дребезг контактов» кнопки и исключить ложное срабатывание.
Схема управления светодиодом двумя кнопками от Ардуино
Скетч. Управление двумя кнопками одним светодиодом
boolean button1WasUp = true; boolean button2WasUp = true; void setup() { pinMode(10, OUTPUT); digitalWrite(10, LOW); pinMode(2, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); } void loop() { // узнаем, отпущены ли две кнопки сейчас boolean button1IsUp = digitalRead(2); boolean button2IsUp = digitalRead(4); // если кнопка 1 была отпущена и не отпущена if (button1WasUp && !button1IsUp) { delay(10); // повторно считываем сигнал с кнопки 1 button1IsUp = digitalRead(2); if (!button1IsUp) { digitalWrite(10, LOW); } } // если кнопка 2 была отпущена и не отпущена if (button2WasUp && !button2IsUp) { delay(10); // повторно считываем сигнал с кнопки 2 button2IsUp = digitalRead(4); if (!button2IsUp) { digitalWrite(10, HIGH); } } // запоминаем состояние двух кнопок ардуино button1WasUp = button1IsUp; button2WasUp = button2IsUp; }
Пояснения к коду:
- данный пример программы позволяет включать светодиод нажатием одной кнопки и выключать светодиод нажатием второй кнопки;
- задержка Ардуино позволяет избежать «дребезг контактов» кнопки и исключить возможность ложного срабатывания.
Следующий пример тоже потребует для подключения к Ардуино две кнопки, два светодиода, как на предыдущей схеме. Но вместо простого включения/выключения диода, мы будем увеличивать и уменьшать яркость светодиода с помощью ШИМ сигнала микроконтроллера. Загрузите пример программы для «Светодиод и кнопка Ардуино ШИМ», чтобы получить понятие о принципе работы кнопки с Arduino Uno.
Скетч. Управление яркостью светодиода кнопкой Ардуино
#define PLUS_BUTTON 2 #define MINUS_BUTTON 4 int brightness = 100; boolean plusUp = true; boolean minusUp = true; void setup() { pinMode(10, OUTPUT); pinMode(PLUS_BUTTON, INPUT_PULLUP); pinMode(MINUS_BUTTON, INPUT_PULLUP); } void loop() { analogWrite(10, brightness); // реагируем на нажатия кнопки с помощью функции handleClick plusUp = handleClick(PLUS_BUTTON, plusUp, +20); minusUp = handleClick(MINUS_BUTTON, minusUp, -20); } boolean handleClick(int buttonPin, boolean wasUp, int delta) { boolean isUp = digitalRead(buttonPin); if (wasUp && !isUp) { delay(10); isUp = digitalRead(buttonPin); // если был клик кнопки, меняем яркость в пределах от 0 до 255 if (!isUp) brightness = constrain(brightness + delta, 0, 255); } return isUp; }
Пояснения к коду:
- для подключения светодиода следует использовать пин с ШИМ модуляцией;
- начальное значение яркости равен ста, в программе прирост и уменьшение яркости (20) можно поменять по своему усмотрению.
Заключение. Мы рассмотрели сразу несколько примеров для управления светодиодом Ардуино с помощью кнопки. Вы узнали, что светодиодом можно управлять с помощью одной кнопки, или производить включение/выключение двумя кнопками. Кроме того, можно менять яркость с помощью кнопки и ШИМ сигнала. Все рассмотренные примеры можно использовать в различных проектах на Arduino для начинающих.
Как это работает
Адресная лента WS2812B поделена на сегменты, в каждом из которых расположен светодиод и конденсатор (для повышения помехоустойчивости). Относительно напряжения питания все они между собой подключены параллельно, то есть +5 В будет присутствовать на каждом сегменте. А вот передача данных осуществляется последовательно: от предыдущего сегмента к последующему. Поэтому при выходе из строя одного из светодиодов цепи все следующие сегменты перестанут светиться. Управление готовыми устройствами и модулями на базе WS2812.
B производится с помощью специализированного контроллера, внутри которого записана программа. На радиолюбительском уровне управлять работой адресной светодиодной ленты удобней всего через Arduino, используя для этого небольшую программу – скетч. Схема подключения к Arduino
У каждой адресной ленты есть начало и конец, которые нельзя менять местами во время сборки схемы. Чтобы не запутаться, производители используют условные обозначения, например, стрелки, указывающие направление сигнала. Подключение адресной светодиодной ленты WS2812B к Arduino производится по трём проводам, как показано на рисунке.Контакты питания +5V и GND соединяют с соответствующими выводами на плате Arduino.
Если подсоединяемый отрезок насчитывает более 13-ти светодиодов, то необходимо использовать выносной блок питания. При этом общий провод (GND) Arduino и «минус» блока питания должны быть соединены между собой. Контакт DIN (digital input) предназначен для приёма данных от контроллера и электрически соединяется с любым из его цифровых портов. С другой стороны адресной ленты (и каждого сегмента тоже) размещено 3 контакта: +5V, DO (digital output) и GND, к которым можно подключить ещё несколько отрезков разной длины.
Так как каждый элемент WS2812B фактически состоит из 3 светодиодов (синего, красного, зелёного), то для управления его свечением потребуется 3 байта (по одному на каждый цвет). В свою очередь, каждый байт может принимать значение от 0 до 255, в результате чего можно задать более 16,5 млн оттенков. Размер скетча будет равен количеству светодиодных сегментов, умноженному на 3. Передача данных происходит следующим образом: ШИМ-драйвер WS2812B первого сегмента забирает из посылки первые 3 байта, пропуская остальные данные на выход DO.
Далее следует пауза длиною до 50 мкс, означающая, что второй по счёту драйвер должен принять следующие 3 байта. И так далее. Длительность паузы больше 50 мкс означает конец передачи и повторение цикла. Для работы с адресными лентами и модулями проще всего использовать библиотеки FastLED и Adafruit NeoPixel. Внутри каждой библиотеки есть готовые скетчи, на основе которых несложно научиться самостоятельно создавать новые световые эффекты. Чтобы скетч заработал с первого раза, необходимо в заголовке правильно указать количество светодиодов в ленте (NUM_LEDS) и номер порта для передачи данных (PIN).
Адресные ленты стоят дороже обычных лент, и применяются обычно там, где простые ленты по какой-то причине не применимы: полноцветные модульные сборки, декоративная подсветка с управлением «soft light», наружная реклама и т. д. Особенность таких сборок в том, что они способны изменять и цвет и яркость отдельных своих сегментов по более сложному алгоритму, нежели простые LED-ленты, даже если эти LED-ленты оснащены умными драйверами. ШИМ-сигнал управления подается со специального запрограммированного контроллера на вход ленты, и передается последовательно на вход одного чипа (digital input – DI), выходит из него (digital output – DO), затем проходит через второй чип, и т. д. Управление легко осуществить при помощи программы на ардуино.
Светодиодная лента в блоком управления.