Arduino и адресная светодиодная лента
Описание
Адресная светодиодная лента, в отличие от обычной RGB, позволяет управлять цветом и яркостью каждого своего светодиода. Благодаря этому на ней можно отображать различные интересные эффекты, как статические, так и динамические. Сама по себе лента ничего не может, поэтому генерацией эффектов занимается микроконтроллер (или плата на его основе, например Arduino). Более подробно про виды адресных лент можно прочитать в моей статье.
В наборе GyverKIT есть 1 метр адресной светодиодной ленты WS2812b. При желании ленту можно докупить в том же магазине, где продаётся набор – Giant4.
Подключение
В рассмотренных выше схемах Arduino питается от USB. Для автономной работы можно подключить питание с адаптера на пин 5V платы.
При наличии на ленте штекера можно подключать управление и питание следующим образом:
Примечание:
Библиотеки
Самой функциональной и известной библиотекой является FastLED, можно установить через диспетчер библиотек по названию FastLED. В библиотеке ОЧЕНЬ много возможностей, см. официальную вики-документацию, а также полный список модулей, классов и функций.
Как работать с FastLED
Коротко рассмотрим как работать с библиотекой FastLED и самые основные инструменты.
Логика работы с адресной лентой сводится к следующему: лента представляется в виде одномерного массива, каждый элемент – светодиод, точнее его цвет. Цвет светодиода кодируется тремя байтами, то есть 256 значений на каждый канал: красный, зелёный, синий. В программе можно производить различные манипуляции с этим массивом, то есть задавать цвета светодиодам при помощи различных инструментов библиотеки. Как только построение “кадра” закончено – массив можно отправить на ленту и светодиоды включатся соответственно заданным цветам.
Для начала обозначим константами длину ленты и пин, к которому она подключена, просто чтобы проще было редактировать программу в дальнейшем:
В блоке setup нам нужно передать в библиотеку информацию о подключенной ленте, а также подключить созданный выше массив. Чтобы программа знала, откуда брать информацию о цветах. По порядку указывается тип ленты, пин, порядок цветов. В круглых скобках – имя нашего массива, а также его размер – длину ленты:
Отлично! Всё настроено и готово к работе.
Общие функции
Помимо задания цветов в массиве, существуют следующие управляющие функции:
Тип данных CRGB
Библиотека организована так, что переменной типа CRGB можно задать значение несколькими способами. Рассмотрим задание цвета первому светодиоду в нашей ленте, то есть элемент массива под номером ноль: leds[0]
Подробнее про цветовые модели RGB и HSV можно почитать вот здесь.
Примеры
Итак, с базовыми понятиями разобрались, переходим к практике. Для начала зальём всю ленту статичной радугой. Для этого покрасим светодиоды в цикле, задав цвет от 0 до 255 от первого до последнего светодиода в ленте. Конструкция i * 255 / LED_NUM позволяет получить значения от 0 до 255 при изменении i от 0 до LED_NUM:
Можно сделать подвижную радугу, это будет уже полноценная анимация. Для этого ленту нужно постоянно обновлять новыми цветами, например 30 раз в секунду. Чтобы плавно менять цвет – добавим к нему счётчик, который будет меняться от 0 до 255 и так по кругу.
Можно сделать один бегающий светодиод: каждый раз очищать ленту и красить светодиод под номером, который задаётся счётчиком. Изменение счётчика закольцевать от 0 до количества светодиодов:
И таких эффектов можно придумать очень много! Займёмся этим уже в блоке проектов
Что такое адресная светодиодная LED лента: питание, мощность, подключение, выбор
Что такое адресная светодиодная лента
Адресная светодиодная лента – это длинная цветная RGB светодиодная лента на основе гибкой печатной платы, на которой на одной стороне размещаются RGB светодиоды с ограничивающими резисторами, конденсаторами и управляющими контроллерами. От обычной RGB светодиодной ленты адресная светодиодная лента отличается тем, что на ней все светодиоды подключаются параллельно и каждый из них отдельно управляется своим контроллером.
Как и для любой светодиодной ленты, адресной светодиодной ленте требуется стабилизированный источник питания с большим током отдачи.
Отличие обычной RGB ленты от адресной светодиодной ленты
Цвет обычной цветной светодиодной ленты задается одинаковым по всей длине одним внешним контроллером и таким образом можно задать практически любой цвет или оттенок. В адресной светодиодной ленте каждый установленный на ленте светодиод может управляться отдельно своим собственным ШИМ регулятором контроллером. Получается, что можно будет задать разные цвета всем светодиодам на ленте.
Очень часто управляемые RGB светодиоды в адресной светодиодной ленте подключаются к источнику питания 5 В, в таком случае на такой адресной светодиодной ленте все светодиоды подключаются параллельно. В последних современных версиях таких лент стали использовать соединение по три светодиода на участок последовательно, что позволило подключать их к источнику питания 12 В.
В отличии от обычной RGB цветной светодиодной ленты адресные светодиодные ленты не будут работать без управляющих команд, поступающих от внешнего управляющего процессора. Даже если их подключить к источнику питания, ни один светодиод не загорится, пока не поступит соответствующая команда на включение.
У адресных светодиодных лент есть начало и конец, что нужно учитывать при подключении. На многих лентах для удобства имеются стрелки, указывающие направление от начала к концу.
Где применяется адресная светодиодная лента
Спектр применения адресных светодиодных лент также широк, как и у обычных RGB лент. Их применяют для декоративной подсветки различных объектов, салонов автомобилей, для декорирования интерьера и особенно активно применяют при оформлении рекламных вывесок. Благодаря возможности управления каждым светодиодом по отдельности с помощью адресных светодиодных лент можно составлять целые ленты для демонстрации текста или даже огромные панели для полноценного показа цветных изображений.
На основе адресных светодиодных лент собирается большинство уличных телевизионных панелей для показа видеорекламы.
Какие бывают адресные светодиодные ленты
Для управления светодиодами адресных светодиодных лент могут применять чипы WS2811 и WS2812B. Чип WS2811 изготавливается в корпусе DIP-8 или SOP-8, и монтируется непосредственно на светодиодную ленту. Если светодиодная лента рассчитана на напряжение 5В, то такая интегральная микросхема устанавливается рядом с каждым RGB светодиодом. При использовании питания 12В такой чип устанавливается один на три светодиода.
Более современный чип WS2812B настолько маленький, что его размещают непосредственно в корпусе RGB светодиода. Такие светодиоды на ленте размещаются гораздо плотнее и для питания применяется источник 5 В.
В адресных (пиксельных) светодиодных лентах светодиоды подключаются параллельно, при питании от 5В, а вот данные от драйвера к драйверу передаются последовательно. В этом есть одно большое неудобство, если один из ШИМ-регуляторов выйдет из строя, все следующие после него светодиоды перестанут работать. Для решения данной проблемы была выпущена следующая серия чипов WS2813, которые позволяют использовать четвертую дублирующую дорожку для передачи данных. С чипами WS2813 все исправные светодиоды будут работать, даже если в цепи некоторые выйдут из строя.
Как подключается адресная светодиодная лента
Для подключения современной адресной светодиодной ленты требуется три контакта, два из которых относятся к питанию, третий управляющий. Контакты питания, подписанные как GND, +5V или +12V в зависимости от модификации, подключаются к источнику питания. Третий контакт DIN предназначен для передачи контроллерам управляющих данных (digital input), он подключается к управляющему контроллеру, в качестве которого очень часто выступает Arduino. Для передачи данных контакты GND адресной светодиодной ленты и управляющего контроллера должны быть соединены.
ШИМ-драйверы любую помеху по цепи питания могут принять за управляющий сигнал, и чтобы во время работы ничего не мешало правильному поступлению сигнала по управляющему каналу, в цепь питания светодиодной ленты и Arduino устанавливают электролитические конденсаторы большой емкости. Например, если все запитано напряжением 5В, то на цепь питания светодиодной ленты нужно установить конденсатор 6.3В 1000 мкФ, на цепь питания Arduino 6.3В 470 мкФ. Контакт DIN подключается к Arduino через сопротивление от 200 Ом до 500 Ом.
ШИМ-драйверы, устанавливаемые на адресную светодиодную ленту, 8-битные, а это значит, что на каждый цвет можно устанавливать 256 различных градаций яркости. На один трехцветный светодиод для управления понадобится передать драйверу 3 байта информации, что позволит получить 16,5 млн оттенков.
Управление работой адресной светодиодной ленты
Адресная светодиодная лента при простом подключении питания не будет каким-либо образом реагировать на появление питания. Для включения ей требуется поступление управляющего кода на контакт DIN. Вполне возможно, что случайные или намеренный касания руками этого контакта могут привести к появлению помех, что воспримется драйвером как сигнал и какой-то из светодиодов начнет светиться.
При правильном подключении на управляющий вход светодиодной ленты поступает цифровой сигнал по 3 байта на каждый светодиод. 1 бит информации передается за 1.25 мкс, весь пакет данных для одного светодиода будет передан за 30 мкс. Первый ШИМ-драйвер забирает первый пришедший пакет из 3 байт и передает следующие данные дальше. После отправки первого пакета делается пауза 50 мкс, что дает понять следующему драйверу о необходимости принимать данные. Так происходит передача данных всем следующим светодиодам до момента, пока пауза не превысит 50 мкс. Более длительная пауза будет говорить о том, что цикл будет повторяться заново с отправкой новых данных.
При использовании Arduino предлагается использовать готовые библиотеки, с помощью которых наиболее просто написать программы для управления адресными светодиодными лентами. К таким относятся FastLED и Adafruit NeoPixel.
Мощность адресной светодиодной ленты
Мощность адресной цветной светодиодной ленты зависит от плотности размещения светодиодов на ленте и от длины ленты. Драйверы, которые управляют светодиодами, потребляют настолько мало, что при расчетах их можно не учитывать.
Каждый цветной светодиод на ленте потребляет в среднем около 60 мА, это примерно 20 мА на каждый цвет. Зная количество светодиодов, размещенных на одном метре ленты, можно легко подсчитать общую мощность подключенной ленты.
В светодиодной ленте на 5В все светодиоды подключены параллельно. Если взять для примера один метр адресной светодиодной ленты с плотностью светодиодов 60 штук на метр, то общий потребляемый ток такой ленты составит 3.6А. Это обязательно нужно учитывать при выборе блока питания.
Достоинства и недостатки адресных светодиодных лент
Основные достоинства и недостатки адресной светодиодной ленты такие же, как и у обычных LED лент. Но есть некоторые особенности, которые являются их отличительной чертой.
Достоинства пиксельных LED лент:
множество вариантов использования;
высокая яркость и низкое энергопотребление;
возможность передачи любого цвета;
возможность управления каждым светодиодом по отдельности.
Недостатки пиксельных LED лент:
невозможность использования при отрицательных температурах, появляются сбои в работе драйвера;
невозможно включить светодиодную ленту без управляющих сигналов;
требуются мощные блоки питания.
✅ Адресная светодиодная лента – это RGB светодиодная лента, в которой можно по отдельности управлять любым светодиодом, так как каждый светодиод имеет свой управляющий контроллер и уникальный адрес в цепочке светодиодов.
✅ Адресная светодиодная лента отличается от обычной RGB LED ленты способом подключения и управления, а также возможностями, так как в адресной светодиодной ленте можно управлять каждым светодиодом в отдельности.
✅ Адресные светодиодные ленты применяются при декоративном оформлении помещений, для декоративной подсветки объектов, а также с их помощью можно составить целые панели для отображения цветных изображений или даже текста, в том числе бегущей строки.
Виды светодиодных лент и варианты их подключения
Светодиодную ленту необходимо выбирать на основе исходных данных – где и как она будет использоваться. И при этом нужно разбираться в характеристиках LED лент.
LED лента на 12В
Светодиодная лента на 12 В одна из наиболее популярных и широко применяемых лент в рекламных баннерах и оформлении интерьера.
Светодиодная лента на 24В
Светодиодные ленты на 24 вольта используются с таким же успехом, как и на 12 вольт. Но есть у них один небольшой плюс, благодаря которому выбор может пасть именно на них.
RGB LED лента
Цветные RGB светодиодные ленты имеют большое преимущество в сравнении со стандартными LED лентами, так как могут менять цвет на любой, который задаст RGB контроллер. Это стало возможно за счет установки на такие ленты RGB светодиодов.
Адресная светодиодная лента, в отличие от обычной, содержит так называемые адресные светодиоды. Это значит, что каждый светодиод хотя и получает питание параллельно от общего источника, включается каждый светодиод по индивидуальной команде, и значит, на каждом светодиоде можно получить собственный уникальный оттенок, один из 255 3 = 16581375 возможных.
В отличие от светодиодной RGB-ленты, в которой все светодиоды одинаково реагируют на сигнал с RGB-контроллера, в адресной LED-ленте каждый светодиод получает индивидуальную команду управления
Каждый светодиод в адресной ленте имеет свой уникальный адрес, по которому драйвер обращается к нему при помощи трехбитной команды. Команды отправляются в линию последовательно, для этого служит третий на ленте провод «DATA INPUT».
Возле каждого светодиода на адресной ленте установлен свой микрочип. Сегодня очень распространены адресные ленты с ШИМ-чипами WS2811.
Корпуса микрочипов DIP-8 либо SOP-8. Каждый чип имеет три выхода — каждый на свой цвет, вход передачи данных, выход передачи данных, вывод питания, вход установки режима и общий вывод.
Есть ленты с питанием чипов 5 вольт, но наиболее часто встречаются ленты с питанием 12 вольт, где один такой чип управляет сразу тремя светодиодами. Чипы на ленте соединены друг с другом последовательно через входы и выходы передачи данных.
WS2812B – более компактная модификация чипа, предназначенная для монтажа внутри корпуса светодиода SMD 5050. Так вся сборка имеет всего 4 выхода: питание, общий вывод, вход передачи данных и выход передачи данных.
Светодиоды WS2812B имеют встроенную интегральную схему (интегральную схему, микросхему) в направлении светодиода
Адресные ленты стоят дороже обычных лент, и применяются обычно там, где простые ленты по какой-то причине не применимы: полноцветные модульные сборки, декоративная подсветка с управлением «soft light», наружная реклама и т. д.
Особенность таких сборок в том, что они способны изменять и цвет и яркость отдельных своих сегментов по более сложному алгоритму, нежели простые LED-ленты, даже если эти LED-ленты оснащены умными драйверами.
Для взаимодействия с адресными лентами подходят библиотеки ардуино FastLED и Adafruit NeoPixel. Внутри библиотек содержатся полноценные скетчи, приняв которые за основу легко освоить самостоятельное создание новых световых эффектов. В заголовке скетча необходимо правильно указать количество светодиодов ленты и номер порта передачи данных.
Каждый RGB-светодиод на самом деле имеет в себе три светодиода (красный, зеленый и синий), поэтому для управления одним сегментом (один сегмент — это RGB-светодиод с чипом) требуется 3 байта информации, один байт — один цвет.
Каждый байт может принимать одно из 255 значений, поэтому в принципе каждый RGB-светодиод способен дать свет одним из 255 3 = 16581375 оттенков. Количество байт в одной команде равно таким образом 3 умножить на количество последовательных рабочих сегментов в ленте.
Посылаемая строка попадает на первый чип, который принимает первые три байта информации, пропуская остальные дальше через выход digital output (DO) – в следующий чип. Выдерживается пауза 50 мкс, означающая что следующий в очереди чип должен принять свои три байта информации. Если пауза будет длиться более 50 мкс, это значит что цикл закончен, и предстоит повторение рабочего цикла.
Светомузыка на адресной светодиодной ленте WS2812B и Arduino:
Как работает адресная светодиодная лента?
Наверное этот вопрос «как работает» очень многим покажется глупым. Ответ почти очевиден: адресная светодиодная лента состоит из множества последовательно соединенных «умных светодиодов». Это можно увидеть просто рассматривая устройство ленты. Видны отдельные микросхемы, припаянные к гибкому шлейфу, видны соединения: микросхемы соединены последовательно всего тремя проводами, при этом два из них это питание и земля. Только один провод передает данные о цвете пикселей. Как же это? Что такое «умный светодиод»?
Дальше я расскажу о протоколе передачи данных, используемом в светодиодной ленте на базе WS2812B, и, более того, я почти создам свою «микросхему светодиодной ленты» в микросхеме ПЛИС.
Итак, в ленте используется последовательная передача через один единственный сигнал данных.
Бит ноль передается, как короткий положительный импульс и пауза, которая примерно в два раза шире импульса. Бит единица передается как широкий положительный импульс и короткая пауза:
При отсутствии передачи более 50 микросекунд лента переходит в исходное состояние, готова принимать пиксели начиная с первого.
Каждые 24 бита в последовательности — это 3 байта для трех цветов RGB. Причем на самом деле последовательность будет G-R-B. Старший бит G7 идет первым.
Последовательность из первых 24х бит представляет из себя один пиксель, который получит самый первый светодиод в ленте. Пока первый светодиод не насытится он не передает данные дальше к следующему светодиоду. После того, как первый светодиод получит свою порцию из 24х бит RGB он открывает передачу следующему. Примитивно можно последовательность светодиодов представить, как каскад из кувшинов, последовательно наполняемых водой:
Заполнится первый, потом второй, потом третий и так все по очереди.
Таким образом, я считаю, что с протоколом передачи разобрались.
Можно ли попробовать самому спроектировать такой «умный светодиод»? Практического смысла в этом конечно мало, но для самообразования и расширения кругозора — задача интересная. Попробуем описать логику чипа на языке проектирования аппраратуры Verilog HDL. Конечно, это будет не настоящий дизайн микросхемы, будут ограничения. Одно из самых важных ограничений — мне для моей микросхемы будет нужен внешний тактовый генератор. В настоящем умном светодиоде такой генератор тоже есть, но он встроен уже в чип.
Модуль на Verilog начнем вот так:
Здесь думаю все понятно: тактовая частота clk, входной и выходной сигналы «умного светодиода» in и out, ну и, конечно, выходные сигналы r, g, b через которые я буду управлять реальными внешними светодиодами красным, зеленым и синим.
Входной сигнал я буду захватывать в двухбитный сдвиговый регистр и по текущему состоянию в этих захваченных битах смогу определить начало положительного фронта сигнала in:
Кроме этого, важно определить состояние сброса ленты, когда управляющий контроллер выдерживает паузу перед началом новой передачи:
Дальше, от положительного фронта in_pos_edge нужно выдержать некоторую паузу, чтобы получить момент фиксации нового бита:
Количество уже принятых бит в чипе считаем так:
Здесь вводится еще важный сигнал pass, который как раз и определяет перенаправление входного потока на выход. После принятия 24х бит пикселя сигнал pass устанавливается в единицу:
На выход out мультиплексируются входные данные, когда сигнал pass_final в единице.
Ну и, конечно, нужен сдвиговый регистр, где накапливаются принятые 24 бита пикселя:
По приему всех 24х бит они переписываются в итоговый так же 24х битный регистр.
Теперь остается дело за малым. Нужно реализовать ШИМ (Широтно Импульсную Модуляцию) сигнала для передачи яркости реальным внешним светодиодам согласно принятым байтам RGB:
Остается маленькая деталь — как это все испытать?
Я взял несколько простых плат с ПЛИС MAX II (это платы серии Марсоход) и прошил их все проектом с вот этим Verilog кодом. На платах уже было 8 светодиодов, но они были все желтые. На каждой из плат я заменил 3 светодиода на R, G, B. Платы соединил последовательно и более того подключил их к настоящей светодиодной ленте. Таким образом, я удлинил настоящую ленту своими самодельными светодиодами.
Получилось вот такое соединение:
В реальности это выглядит вот так:
Теперь, подавая на ленту некоторое изображение я вижу, что мои «умные светодиоды» ведут себе точно так же, как и настоящие из ленты:
Получается, что реализованная мною в ПЛИС логика вполне работоспособна! Я смог в первом приближении сделать нечто похожее на реальный чип «умного светодиода».
Вообще, мне нравятся светодиодные ленты. На их основе каждый может изобрести что-то свое: интеллектуальное освещение, экраны, амбилайт эффекты. Однажды я даже реализовал цветомузыку на светодионой ленте под управлением FPGA. Но это уже другая история.
Что такое адресная светодиодная лента
Адресные светодиоды входят в состав адресной ленты – это основное ее отличие от обычной. Каждый светодиодный элемент подключен к цепи параллельно, но получает команду на включение или выключение в индивидуальном порядке. Так образуется один из 1,500,000 возможных оттенков. Каждый такой светодиод имеет свой собственный уникальный адрес, то есть месторасположение.
Драйвер управляет им с помощью специальных команд. Каждый из этих элементов имеет собственный микрочип, который обладает тремя выходами – выход и вход для данных, выбор режима работы. В статье разобраны вопросы устройства, строения и использования адресной светодиодной ленты. В качестве дополнения, в статье размещено два ролика и одна подробная научная статья.
Технические характеристики
Адресная светодиодная лента состоит из RGB-светодиодов в SMD корпусе 5050 и микрочипов ШИМ-драйверов. В настоящее время наиболее популярными являются адресные LED-ленты с использованием чипов WS2811 и WS2812B. Модификация WS2811 представляет собой интегральную микросхему (ИМС) в корпусе DIP-8 (9,2х6,4 мм) или SOP-8 (5,1х4,0 мм). Данный 3-канальный драйвер имеет следующую конфигурацию выводов:
Адресная светодиодная лента – каждый светодиод получает питание от общего источника, но включается по индивидуальной команде.
В адресной ленте с использованием чипа WS2811 и питанием 5 вольт микросхема драйвера располагается в непосредственной близости перед каждым RGB-светодиодом SMD 5050, рядом с которым также установлены токоограничивающие резисторы и конденсатор, защищающий от помех. Но на сегодняшний момент такие модели устарели и встречаются крайне редко. Сегодня в продаже имеются адресные светодиодные ленты на чипах WS2811 только с питанием от +12 В. В этом случае чип WS2811 управляет не одним светодиодом, а группой из 3 штук.
Не успела ИМС WS2811 обрести популярность, как её место заняла более совершенная WS2812B. Данный тип ШИМ-драйвера намного компактнее и размещается непосредственно в корпусе светодиода SMD 5050. Если присмотреться, то под прозрачным люминофором можно увидеть миниатюрный чёрный прямоугольник с отходящими позолоченными проводниками.
Подобная унификация позволила значительно упростить сборку адресных светодиодных лент и модулей, а сам WS2812B имеет лишь 4 вывода:
Сфера применения
Относительно высокая стоимость светодиодов и лент, собранных на чипах WS2811 и WS2812B, ограничивает их область применения в сравнении с обычными LED-лентами. Главным образом их используют для решения таких задач, с которыми обычной светодиодной ленте не справиться:
Интерес к адресной светодиодной ленте среди радиолюбителей вызван тем, что на её основе можно собрать подсветку, которая будет изменять цвет и яркость по заданному алгоритму.
Как это работает
Адресная лента WS2812B поделена на сегменты, в каждом из которых расположен светодиод и конденсатор (для повышения помехоустойчивости). Относительно напряжения питания все они между собой подключены параллельно, то есть +5 В будет присутствовать на каждом сегменте. А вот передача данных осуществляется последовательно: от предыдущего сегмента к последующему. Поэтому при выходе из строя одного из светодиодов цепи все следующие сегменты перестанут светиться. Управление готовыми устройствами и модулями на базе WS2812.
У каждой адресной ленты есть начало и конец, которые нельзя менять местами во время сборки схемы. Чтобы не запутаться, производители используют условные обозначения, например, стрелки, указывающие направление сигнала. Подключение адресной светодиодной ленты WS2812B к Arduino производится по трём проводам, как показано на рисунке.Контакты питания +5V и GND соединяют с соответствующими выводами на плате Arduino.
Если подсоединяемый отрезок насчитывает более 13-ти светодиодов, то необходимо использовать выносной блок питания. При этом общий провод (GND) Arduino и «минус» блока питания должны быть соединены между собой. Контакт DIN (digital input) предназначен для приёма данных от контроллера и электрически соединяется с любым из его цифровых портов. С другой стороны адресной ленты (и каждого сегмента тоже) размещено 3 контакта: +5V, DO (digital output) и GND, к которым можно подключить ещё несколько отрезков разной длины.
Далее следует пауза длиною до 50 мкс, означающая, что второй по счёту драйвер должен принять следующие 3 байта. И так далее. Длительность паузы больше 50 мкс означает конец передачи и повторение цикла. Для работы с адресными лентами и модулями проще всего использовать библиотеки FastLED и Adafruit NeoPixel. Внутри каждой библиотеки есть готовые скетчи, на основе которых несложно научиться самостоятельно создавать новые световые эффекты. Чтобы скетч заработал с первого раза, необходимо в заголовке правильно указать количество светодиодов в ленте (NUM_LEDS) и номер порта для передачи данных (PIN).
Адресные ленты стоят дороже обычных лент, и применяются обычно там, где простые ленты по какой-то причине не применимы: полноцветные модульные сборки, декоративная подсветка с управлением «soft light», наружная реклама и т. д. Особенность таких сборок в том, что они способны изменять и цвет и яркость отдельных своих сегментов по более сложному алгоритму, нежели простые LED-ленты, даже если эти LED-ленты оснащены умными драйверами. ШИМ-сигнал управления подается со специального запрограммированного контроллера на вход ленты, и передается последовательно на вход одного чипа (digital input – DI), выходит из него (digital output – DO), затем проходит через второй чип, и т. д. Управление легко осуществить при помощи программы на ардуино.
Протокол
Теперь, когда мы разобрались, как подключить нашу ленту к Arduino, нам надо понять, как ею управлять, для этого в даташите есть описание протокола, который мы сейчас и рассмотрим. Каждый светодиод WS2812B имеет один вход (DIN) и один выход (DO). Выход каждого светодиода подключается ко входу следующего. Подавать сигналы же надо на вход самого первого светодиода, таким образом, он запустит цепь, и данные будут поступать от первого ко второму, от второго к третьему и т. д. Команды светодиодам передаются пачками по 24 бита (3 байта, один байт на каждый цвет, первым передается байт для зеленого, потом для красного, и заканчивает байт для синего светодиода.
Порядок бит – от старшего к младшему). Перед каждой пачкой идет пауза в 50 мкс. Пауза больше 100 мкс воспринимается как окончание передачи. Все биты, будь то 0 или 1, имеют фиксированное время 1.25 мкс. Бит 1 кодируется импульсом в 0.8 мкс, после чего идет пауза в 0.45 мкс. Бит 0 кодируется импульсом в 0.4 мкс, после чего идет пауза в 0.85 мкс. Собственно, наглядная диаграмма на фото ниже. Так же допускаются небольшие погрешности в 0-150 нс на каждый фронт. Ну и следует учесть, что подобное необходимо повторить для каждого светодиода на ленте, после чего сделать паузу минимум в 100 мкс. Потом можно повторить передачу.
Глядя на все эти цифры, становится ясно, что сделать все это, используя стандартные функции digitalWrite, delay и тому подобные – попросту невозможно, ввиду их долгой работы и неточности. Реализовать подобный протокол можно только использовав специальные библиотеки вроде CyberLib или написав собственную на чистом Си или, того хуже для нынешнего программиста, на Ассемблере. Но не все так плохо, как кажется. Светодиоды WS2812B довольно таки популярны в Arduino сообществе, а это значит, что нам не придётся вдаваться в такие сложности, и достаточно выбрать одно из понравившихся решений.
Библиотеки
Поискав в интернете, вы найдете, как минимум, две большие библиотеки для работы со светодиодами WS2812B. Под большими библиотеками я подразумеваю не количество функций и возможностей, хотя и это то же, а количество людей, участвовавших в их разработке. Конечно, поискав, еще можно найти и другие библиотеки, разработанные отдельно взятыми ардуинщиками, но работающими не на всех микроконтроллерах Arduino и с большим количеством багов.
Теперь давайте напишем наш излюбленный пример Blink, используя обе эти библиотеки, и затем сравним их.
Заключение
Лента основана на светодиодах WS2812B в корпусе LED 5050, куда в корпус производители поместили не только три встроенных светодиода (Красный, Зеленый, Синий), но и управляемый ШИМ драйвер, управляющий их яркостью. Благодаря этому мы можем получить произвольный цвет, изменяя яркость встроенных светодиодов, а так же управлять отдельно взятым пикселем на ленте. Собственно, три встроенных разноцветных светодиода вместе с ШИМ драйвером и образуют светодиод WS2812B.
В статье описано строение и монтаж адресной ленты. Более подробная информация на данную тему содержится Практикум по адресным лентам. В нашей группе ВК можно задавать вопросы и получать на них подробные ответы от профессиональных электронщиков. Чтобы подписаться на группу, вам необходимо будет перейти по следующей ссылке: https://vk.com/electroinfonet.
В завершение статьи хочу выразить благодарность источникам, откуда мы черпали информацию:






















