Как подключить адресную светодиодную ленту к ардуино?

Подключение адресной светодиодной ленты WS2812B к Arduino

Приветствую всех. Мы продолжаем знакомить Вас со светодиодными лентами. На этот раз мы рассмотрим адресную RGB светодиодную ленту WS2812B. Лента основана на светодиодах WS2812B в корпусе LED 5050, куда в корпус производители поместили не только три встроенных светодиода (Красный, Зеленый, Синий), но и управляемый ШИМ драйвер, управляющий их яркостью. Благодаря этому мы можем получить произвольный цвет, изменяя яркость встроенных светодиодов, а так же управлять отдельно взятым пикселем на ленте. Собственно, три встроенных разноцветных светодиода вместе с ШИМ драйвером и образуют светодиод WS2812B.

Немного запутывает, не правда ли? Светодиод, который содержит себе три разноцветных светодиода, но при этом сам — не светит, а светятся те три, что в него встроены. Поэтому мне проще называть его пикселем, нежели светодиодом. И далее, если я упоминаю пиксель – знайте, что это светодиод WS2812B.

На фото справа вы можете увидеть этот самый светодиод WS2812B, где большой черный прямоугольник это ШИМ драйвер, а вот три встроенных в него светодиода настолько малы, что их с трудом видно, и можно отследить только по золотым нитям, идущим от драйвера к трем разноцветным светодиодам.

Технические характеристики

Теперь давайте немного пройдемся по техническим характеристикам из datasheet который мне удалось раскопать в интернете.

  • Светодиод WS2812B работает от напряжения 5В (±0.5).
  • Ток

20мА на один встроенный светодиод, то есть

Остальное можете посмотреть самостоятельно в даташите.

Подключение

Подключается светодиодная лента довольно-таки просто, необходимо подать на +5V и GND, плюс (+) и минус (-) от 5В блока питания, а контакт DIN соединить с портом Arduino, как правило, по умолчанию используется 6-й порт Arduino, но вы вправе выбрать и любой другой свободный порт. Так же рекомендуется соединить земли Arduinoи блока питания, как нарисовано на рисунке ниже.

Будьте внимательны, лента на светодиодах WS2812B имеет направление, с одной стороны она имеет контакты DIN, +5V, GND, а с другой стороны DO, +5V, GND, подключать необходимо именно вход, то есть DIN, иначе лента не будет работать. Так же на ленте нарисованы стрелки, указывающие на направление.

WS2812B подключение к Arduino

Протокол

Теперь, когда мы разобрались, как подключить нашу ленту к 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 мкс. Потом можно повторить передачу.

WS2812B протокол

Глядя на все эти цифры, становится ясно, что сделать все это, используя стандартные функции digitalWrite, delay и тому подобные — попросту невозможно, ввиду их долгой работы и неточности. Реализовать подобный протокол можно только использовав специальные библиотеки вроде CyberLib или написав собственную на чистом Си или, того хуже для нынешнего программиста, на Ассемблере.

Но не все так плохо, как кажется. Светодиоды WS2812B довольно таки популярны в Arduino сообществе, а это значит, что нам не придётся вдаваться в такие сложности, и достаточно выбрать одно из понравившихся решений.

Библиотеки

Поискав в интернете, вы найдете, как минимум, две большие библиотеки для работы со светодиодами WS2812B. Под большими библиотеками я подразумеваю не количество функций и возможностей, хотя и это то же, а количество людей, участвовавших в их разработке. Конечно, поискав, еще можно найти и другие библиотеки, разработанные отдельно взятыми ардуинщиками, но работающими не на всех микроконтроллерах Arduino и с большим количеством багов.

    Библиотека FastLED, разрабатывается Даниэлем Гарсиа и Марком Кригсманом. Имеет свой сайт, справочную систему и большое сообщество в

Теперь давайте напишем наш излюбленный пример Blink, используя обе эти библиотеки, и затем сравним их.

Пример Blink используя ленту WS2812B (с 30 светодиодами) и библиотеку FastLED
Пример Blink используя ленту WS2812B (с 30 светодиодами) и библиотеку Adafruit NeoPixel
Подытожим

Как вы видите из скетчей выше, работать с обеими библиотеками довольно таки просто. Но библиотека FastLED занимает больше места в памяти Arduino, более того чем больше пикселей в вашей ленте тем больше памяти она зарезервирует для своей работы, а точнее 3 байта на каждый пиксель. Таким образом подключить к Arduino можно не более 600 пикселей при использовании минимальной логики. По этому, мне больше приглянулась библиотека Adafruit NeoPixel. В ней только нужное для работы со светодиодными лентами и более рациональное использование памяти. Какую из этих библиотек использовать, решать, конечно, вам. Обе они работают и со своею задачей справляются на 5+.

Ну а мы на этом закончим с обзором ленты. Далее мы сделаем на ее основе несколько проектов, для более наглядной демонстрации, но это уже буду отдельные статьи. Успехов вам и удачи. Оставляйте свои отзывы и комментарии.

Адресная светодиодная лента ws2812 и Arduino

Адресная светодиодная лента – это украшение любого проекта Arduino. С ее помощью вы можете создавать светомузыку, умную подсветку для телевизора, бегущие строки и другие проекты, в которых требуется отобразить информацию на широком экране. Благодаря встроенным контроллерам, вы можете управлять каждым из светодиодов ленты в отдельности, управляя ими как пикселями на экране. В этой статье мы разберемся, как работает адресная светодиодная лента, как ее подключить к Ардуино и какие библиотеки лучше использовать для управления.

Адресные светодиодные ленты

Светодиодная лента – это набор связанных светодиодов, на которые может одновременно подаваться напряжение питания. Обычные ленты хорошо всем знакомы, они используются сегодня повсюду. В адресной светодиодной ленте так же используются светодиоды, но светоизлучающий диод может управляться отдельно и независимо от других. Таким образом, адресные ленты можно использовать для более интеллектуального управления световым потоком на отдельных участках ленты, включая или выключая подсветку в нужное время и в нужном месте.

Адресная светодиодная лента WS2811

Сегодня наибольшей популярностью пользуются разноцветные светодиодные ленты RGB-формата, позволяющие получать множество цветов. Благодаря конструкции есть возможность управления цветом каждого светодиода, что позволяет создавать оригинальные световые эффекты. Главное отличие адресной светодиодной ленты от обычной RGB ленты – это наличие специальных контроллеров (конструктивно выполненных в виде микросхем) возле каждого светодиода, что и дает возможность индивидуальной адресации и регулирования каждого оттенка.

Как правило,л ента содержит 3-4 контакта для подключения. Два вывода используются для питания – 5 Вольт и земля, остальные один или два – логический, для управления свечением.

Управление умной лентой производится по цифровому протоколу. Это значит, что без управляющего контроллера управлять устройством нельзя. Кстати, при прикосновении к цифровому входу может загореться несколько диодов – это связано с тем, что появляются помехи, которые контроллер принимает за команды.

Самыми популярными адресными светодиодными лентами являются устройства на чипах WS2812b и WS2811. В первом случае чип находится прямо внутри светодиода, то есть один прибор управляет свечением одного излучающего диода. Питание ленты составляет 5 вольт. Во втором случае чип помещается отдельно, и к нему подключаются 3 диода. Мощность – 12 вольт.

Купить адресную светодиодную ленту

Ленты ws2812 достаточно распространены на российском рынке, их без труда можно найти в многочисленных специализированных магазинах. Можем посоветовать интернет-магазин Giant4.Ru с достаточно широким ассортиментом различных светодиодных лент и вполне низкими ценами, сопоставимыми с али. Если же есть возможность и желание ждать товар с Алиэкспресса, то ниже мы собрали вместе некоторые популярные варианты у надежных поставщиков:

Как работает адресная светодиодная лента

Принцип работы ленты следующий. Она поделена на сегменты, в каждом из которых находятся светодиод и конденсатор. Они все подключены параллельно, а данные передаются последовательно от одного сегмента к другому. Управление осуществляется контроллером, в котором прописывается программа функционирования. Управлять лентой можно через платформу Ардуино.

Маркировка адресной ленты:

  • Black PCB / White PCB – цвета подложки;
  • 1м/5 м – длина адресной ленты;
  • 30/60/74 и т.д. – сколько светодиодов приходится на 1 метр ленты;
  • IP30, IP65, IP67 – степень влаго- и пылезащищенности ленты =.

Адресные светодиодные ленты используются для сборки полноценных модулей, в конструировании ламп с управлением soft lights, для декоративной подсветки, в построении диодных экранов уличной рекламы.

Видео инструкции и ролики

Обучающее видео на канале HomeMade:

Лента на базе ws2812b

Лента на базе ws2812b

Лента на чипе ws2812b является более совершенствованной, чем ее предшественник. ШИМ драйвер в адресной ленте компактен, и размещается прямо в корпусе светоизлучающего диода.

Основные преимущества ленты на основе ws2812b:

  • компактные размеры;
  • легкость управления;
  • управление осуществляется всего по одной линии + провода питания;
  • количество включенных последовательно светодиодов не ограничено;
  • невысокая стоимость – покупка отдельно трех светодиодов и драйвера к ним выйдет значительно дороже.

Лента оснащена четырьмя выходами:

  • питание;
  • выход передачи данных;
  • общий контакт;
  • вход передачи данных.

Максимальный ток одного адресного светодиода равняется 60 миллиамперам. Рабочие температуры лежат в пределах от -25 до +80 градусов. Напряжение питания составляет 5 В +-0,5.

ШИМ драйверы ленты 8-мибитные – для каждого цвета возможно 256 градация яркости. Для установки яркости нужно 3 байта информации – по 8 бит с каждого светодиода. Информация передается по однолинейному протоколу с фиксированной скоростью. Нули и единицы кодируются высоким и низким уровнем сигнала по линии.

1 бит передается за 1,25 мкс. Весь пакет из 24 бит для одного светодиода передается за 30 мкс.

Пример подключения к ардуино

Любая адресная светодиодная лента имеет начало и конец, которые важно не перепутать во время сборки. На них есть специальные обозначающие стрелки, которые указывают направление сигнала.

Лента ws2812B подключается к Ардуино следующим образом.

Лента ws2812B подключается к Ардуино следующим образом

Еще один вариант подключения:

Подключение ws2128 к Ардуино

Выходы питания с ленты 5В и земля соединяются с соответствующими контактами на микроконтроллере Ардуино. При подключении отрезка с более чем 13 светодиодами потребуется выносной блок питания. Земля и минус блока питания должны быть соединены друг с другом. DINможно подключить к любому цифровому порту на Ардуино. Он используется для получения данных с контроллера.

Цифровой вход ленты идет на вход контроллера, поэтому между ними нужен токоограничивающий резистор номиналом 100-500 Ом. С его использованием нагрузка на пин будет ниже. На другом конце ленты также есть 3 контакта, к которым можно подключить отрезки различной длины.

Каждый блок ленты состоит из трех светодиодов. Соответственно, для управления подсветкой потребуется 3 байта – по одному на каждый свет. Каждый байт принимает значение от 0 до 255 – это значит, что есть возможность задания более 16 миллионов оттенков.

Данные передаются следующим образом:

  • ШИМ драйвер забирает первые 3 байта, остальные передаются на выход D0;
  • затем пауза длительностью 50 мкс;
  • второй драйвер принимает следующие 3 байта.И так далее.
  • Когда длительность задержки становится более 50 мкс, передача окончена и начинается второй цикл.

Причины проблем при работе с адресной светодиодная лентой:

  • неправильное соединение с землей;
  • сигнальный провод идет не в начало схемы;
  • перепутаны земля и 5 В;
  • если получаются цвета ближе к красному, проблема с блоком питания, пайкой линии или слишком тонкие провода;
  • после подключения без резистора пин на Ардуино может сломаться, поэтому придется переключать на другой.

Библиотеки Ардуино для работы со светодиодной лентой

Для управления адресной светодиодной лентой существует 3 библиотеки: FastLED, AdafruitNeoPixel и LightWS2812. Наиюолее популярной является первая. Она поддерживает все версии Ардуино и различные протоколы данных, которые используются не только для адресной ленты. Но надо иметь в виду, что FastLED более ресурсоемкая.

Вторая библиотека, AdafruitNeoPixel, чаще используется при работе со светодиодными кольцами. Возможностей меньше, скорость ниже, но она менее требовательна к ресурсам, в ее составе только самое нужное. Поддерживает все версии Ардуино. Третья библиотека используется не очень часто.

Работать с библиотеками FastLED и Adafruit NeoPixel одинаково просто. Их отличия заключаются в функциональности и объеме занимаемой памяти.

Основные моменты подключения ленты:

  • Команды передаются друг за другом, и нужно не перепутать начало и конец. D1 принимает команды, D0 используется для подключения дополнительных отрезков.
  • Для подключения цифрового входа нужно резистор.
  • При монтаже адресной светодиодной ленты нельзя допускать статического электричества.
  • Если между лентой и Ардуино расстояние более 15 см, сигнальный провод и землю нужно перекрутить в косичку. Это поможет избежать наводок.
  • Питание. Каждому светодиоду в сегменте нужно 20 мА. Суммарный ток будет составлять 60 мА. Нужно просчитать общий ток ленты, и, исходя из полученного значения, подбирать блок питания. Например, лента длиной 1 м с 60 диодами будет потреблять 60*60=3600 мА=3,6 Ампер. Блок питания подбирается с похожей мощностью.
  • Силовые точки должны быть запаяны качественно. Провода должны иметь такое сечение, чтобы выдерживать подаваемую нагрузку. Минимальное сечение 1,5 кв.м. При тонких проводах заданный программно белый цвет будет отдавать красным оттенком.
  • Помехи. Лента, которая мигает, может создать помехи на линии. Если она с контроллером получает напряжение от одного источника, то помехи пойдут на микроконтроллер. Это может привести к нестабильности работы и различным сбоям. Решением проблемы будет установка электролитического конденсатора емкостью 470 мкФ на питание микроконтроллера и конденсатор на 1000 или 2200 мкФ на питание ленты.
  • Если лента и устройство управления питаются от источников с разным напряжением, нужно использовать преобразователь уровня.
  • Рекомендуется подавать на ленту менее 5 В питания.
  • Питание в длинной ленте советуется распределить по всей длине. В ином случае моет произойти перегрев токопроводящих дорожек.
  • На ленте имеется толстый слой меди. От точки питания по ленте может падать напряжение. Для удаления подобной проблемы нужно дублировать питание при помощи медного провода сечением минимум 1,5 кв.м. через каждый метр.

Соблюдение основных моментов и следование инструкции позволяет самостоятельно подключить адресную светодиодную ленту к вашему проекту.

Подключение адресной светодиодной ленты WS2812 (NeoPixel LEDs) к Arduino

В настоящее время адресные светодиодной ленты (NeoPixel LEDs) на базе светодиодов WS2812 находят широкое применение в различных областях. В данной статье мы рассмотрим подключение подобной ленты к плате Arduino и научимся управлять ею в различных режимах.

Внешний вид адресной светодиодной ленты

Ранее на нашем сайте применение адресной светодиодной ленты (NeoPixel LEDs) рассматривалось в следующих проектах:

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Адресная светодиодная лента (WS2812 RGB LED Ring Module) (купить на AliExpress).
  3. Макетная плата.
  4. Соединительные провода.

Внешний вид необходимых для проекта компонентовЧто такое NeoPixel?

После своего изобретения в 1962 году светодиоды стали неотъемлемой частью нашей жизни. В большинстве электронных проектов используются светодиоды одного цвета, но использование светодиодов разных цветов выглядело настолько привлекательно, что следом за обычными светодиодами появились трехцветные светодиоды (RGB LEDs) – их еще называют полноцветными или многоцветными светодиодами. На нашем сайте можно прочитать статью о подключении подобного светодиода к плате Arduino.

RGB светодиод способен излучать любой цвет, комбинируя в нужной пропорции 3 основных базовых цвета – красный, зеленый и синий. Например, красного и синего цвета формирует фиолетовый цвет. То есть если каждым из базовых цветов управлять с помощью соответствующих им значений от 0 до 255, то можно сформировать любой цвет. Например, фиолетовый (magenta) цвет в этом случае будет формироваться совокупностью значений 255 0 255 (в шестнадцатеричном коде — 2550255 = # FF00FF). RGB светодиоды формируют множество цветов, основываясь на этой модели.

RGB модель цветов

Для управления RGB светодиодом необходимо 3 цифровых контакта микроконтроллера (платы Arduino). То есть, к примеру, если мы хотим управлять 60 RGB светодиодами (причем цвет каждого из них настраивать независимо от других), то нам для этой цели понадобится 180 цифровых контактов. Естественно, подобный подход очень неудобен, поэтому для управления большой совокупностью RGB светодиодов, объединенных, к примеру, в ленту, стали использовать адресацию.

Внутреннее устройство RGB адресного светодиода

Адресуемые (адресные) светодиоды (addressable LEDs) – это новое поколение светодиодов, включающих помимо RGB светодиоды также микросхему (контроллер) управления им. В настоящее время для управления подобными светодиодами наиболее часто используется контроллер WS2812, который позволяет получить доступ к множеству светодиодов с помощью одного цифрового контакта по интерфейсу one wire (1-wire), используя адреса светодиодов.

Схема подключения адресуемых светодиодов

Но в отличие от обычных светодиодов данные светодиоды не включаются просто при подаче на них напряжения, для управления ими необходим микроконтроллер. NeoPixel – это марка (наименование) компании Adafruit для адресуемых светодиодов.

Почему NeoPixel?

Способность управлять отдельно каждым светодиодом в адресной светодиодной ленте дает вам возможность создать уникальные визуальный эффекты для своих проектов. Но помните о том, что если вам требуются очень высокие скорости переключения светодиодов, то использование подобной адресной светодиодной ленты нежелательно. Еще одним достоинством адресной светодиодной ленты NeoPixel является ее низкая цена по сравнению с другими типами адресуемых светодиодов. Светодиоды NeoPixel доступны в форме колец, лент, прямоугольников и поверхностей круглой формы – вы можете выбрать любой ее тип для своих проектов.

Внешний вид RGB модуля круглой формы

Примечание : чем больше светодиодов NeoPixel вы используете, тем больше оперативной памяти и больше мощности необходимо для управления ими, также при этом увеличивается время обработки, поэтому выбирайте оптимальное количество светодиодов NeoPixel исходя из возможностей используемого вами микроконтроллера.

Схема проекта

Схема подключения адресной светодиодной ленты WS2812 к плате Arduino представлена на следующем рисунке.

Схема подключения адресной светодиодной ленты WS2812 к плате Arduino

Резистор в схеме необходим для защиты от повреждений светодиодов NeoPixel и для корректной передачи данных. Наилучшее расстояние для связи между модулем светодиодов NeoPixel и микроконтроллерной платой составляет от 1 до 2 метров.

Примечание : если вы используете адресную светодиодную ленту с большим количеством светодиодов, то в этом случае рекомендуется подключать конденсатор большой емкости (приблизительно 1000 мкФ) параллельно + и – источника питающего напряжения.

Объяснение программы Arduino для работы с адресной светодиодной лентой

Прежде чем начинать работу с адресной светодиодной лентой в Arduino необходимо скачать и установить библиотеку для нее — NeoPixel Adafruit library.

Инструкция по подключению Arduino к адресной светодиодной ленте

Инструкция по подключению Arduino к адресной светодиодной ленте

На сегодня это наша третья статья. В прошлых статьях мы уже разобрали, что из себя представляет адресная лента и примерно поняли, как она устроена. А также поговорили о плате Arduino Nano , по средствам которой мы буем управлять лентой, установили необходимое программное обеспечения и даже написали свою первую программу. Теперь же пришло время подключить все вместе и сделать простую световую анимацию.

Для начала необходимо разобраться с потреблением светодиодной ленты. Дело в том, что каждый светодиод в пикселе потребляет до 20 мА, в зависимости от яркости его свечения. Напомню, что яркость свечения задаем мы сами из программы. Итого получается, что каждый пиксель может потреблять до 60 мА. Это довольно много, если учитывать, что мы можем использовать несколько метров ленты. Но в рамках данной статьи я буду экспериментировать с отрезком на 5 пикселей. И по этой причине запитаю адресную ленту прямо от Arduino Nano . Хотя я бы сам не рекомендовал так делать, лучше всего ставить отдельный блок питания и подключить ленту к нему, а с МК реализовать только управление.

Как мы помним из прошлых статей, управление будет осуществлено любым из цифровых выходов с D 2 по D 13. В данном случае я решил использовать D 5 (просто для примера, Вы можете использовать любой). Итак, подключаем ленту к Arduino Nano . GND к GND , +5 V к +5 V и D — input к D 5 на плате Nano . Я не стал ничего придумывать и просто припаял. Визуально выглядит адресная лента подключенная к Ардуино:

3_01.JPG

А вот схема подключения адресной ленты к Arduino:

3_01_02.png

Тут главное помнить, что адресная светодиодная лента имеет направление и важно не перепутать к какому концу ленты подключать плату Arduino. Но об этом я уже говорил в прошлых статьях и больше заострять на этом внимание не будем.

Следующим действием предлагаю подключить плату Адруино к компьютеру и уже заняться написанием нашей первой программы под адресную светодиодную ленту.

3_02.JPG

Пишем программу для управления адресной светодиодной лентой через Arduino. Установка библиотеки

Первый раз – это всегда очень волнительно. В первый раз можно наделать кучу ошибок, причем в последствии понимаешь, что данные ошибки и нарочно придумать сложно, не то, чтобы их случайно допустить, и это касается не только программирования. Но для того я и пишу данную статью, чтобы максимально облегчить путь от идеи до результата. Сейчас я достаточно подробно опишу все, что буду делать. Это поможет сформировать в голове новичка четкое представление о подключении Arduino.

Для начала давайте откроем IDE Arduino . Это программа, которую мы установили в одной из прошлых статей.

3_03.PNG

Получилось? Отлично! Далее нам необходимо установить библиотеку. Это нужно, чтобы управлять адресной лентой. Дело в том, что лента принимает определенный набор команд, но нам, как молодым разработчикам, пока не интересно, что это за команды и как они устроены. Мы просто хотим управлять цветами. И библиотека управления адресной лентой поможет нам сделать это максимально просто и быстро. Мы будем сообщать программе, где какой цвет хотим видеть, а программа, с помощью библиотеки, будет формировать наборы команд, понятные для микросхем адресной ленты. На самом деле все достаточно просто и очевидно, нужно только привыкнуть. Поэтому нажимаем «Скетч» -> «Подключить библиотеку» — > «Управлять библиотеками».

3_04.png

После этого появится окно «Менеджер библиотек». Кстати, данному окну нужно немного времени чтобы прогрузиться, поэтому пару секунд оно будет не активным, нужно подождать.

3_05.PNG

На данный момент мы будем использовать библиотеку « Adafruit NeoPixel ». Проще всего будет воспользоваться поиском. Как видно, в списке есть похожие название, нужно быть внимательным и не перепутать.

3_06.png

Следующим шагом нам необходимо установить библиотеку, для этого есть соответствующая кнопка. Нажимаем и ждем. После того, как установка будет завершена, кнопка «Установить» пропадет, зато появится выпадающий список, позволяющий выбрать версию. Пока что ничего менять не будем и просто закроем окно.

3_07.png

Пишем программу для управления лентой через Ардуино

И теперь мы приступаем к следующему этапу — написанию программы. Начнем с чего-то простого и потом будем постепенно совершенствовать. Наша первая программа будет выглядеть следующим образом:

3_08.PNG

#define LED_COUNT 5

#define LED_PIN 5

Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

strip.begin(); //Инициализируем ленту.

for (int i = 0; i < LED_COUNT; i++)

strip.setPixelColor(i, strip.Color(255, 0, 0)); // Красный цвет.

for (int i = 0; i < LED_COUNT; i++)

strip.setPixelColor(i, strip.Color(0, 0, 0)); // null

На первый взгляд это может показаться немного не понятным. Сейчас мы пройдемся по коду и используемые нами команды приобретут смысл.

Начнем с первой строчки. Тут мы объявляем библиотеку. Дело в том, что перед этим мы только ее скачали, а чтобы использовать в программе, необходимо ее объявить. Для этого используется директива # include <>. Где в скобках указано имя файла, который будет использоваться при компиляции, как часть кода. В нашем случае это название библиотеки. Кстати да, библиотека – это файл с программой.

Вторая и третья строчки, — тут мы задаем кол-во пикселей в нашей ленте и номер вывода, с которого будет организовано управление.

Обратите внимание: речь идет именно о количестве пикселей, то есть чипов в ленте, а не о количестве светодиодов. В некоторых адресных лентах, например с чипом ws2811 и ws2818 управление происходит кратно 3 диодам, поэтому лента с 60 диодами на метр будет управляться всего 20 пикселями. Если у вас адресная лента ws2812b, ws2813 или ws2815, то управление происходит кратно одному диоду, то есть количество пикселей = количество светодиодов.

Идем далее. Директива # define определяет идентификатор и последовательность символов, которой будет замещаться данный идентификатор при его обнаружении в коде. Давайте разберем вторую строку более подробно «#define LED_COUNT 5». «LED_COUNT» — это идентификатор, которому соответствует символ «5». Это позволит нам в теле программы (везде, где нужно) написать «5», писать «LED_COUNT». Возможно, это звучит немного непотяно, но подумайте вот о чем: нам пришло в голову изменить кол-во пикселей в ленте и тогда нам придется во всем коде менять их кол-во. Но благодаря # define , мы имеем возможность поменять всего лишь последовательность символов в идентификаторе. Понятное дело, в нашей программе возможно заменить все значения, потому что тут всего 2-а десятка строк. Но бывают и очень большие программы, где действия по замене потребуют огромного количества времени и терпения.

В пятой строке мы объявляем экземпляр класса Adafruit_NeoPixel и передаем его конструктору значения о длине ленты, выводе управления и типу адресной ленты. В данной статье мы не будем разбирать само понятие классов, поэтому предлагаю просто принять данную строчку как должное, где в скобках мы передаем необходимые параметры. Скажу только одно: тут мы создали объект под именем « strip ». И этот объект полностью отвечает за работу подключенной ленты.

В теле функции setup () мы сообщаем компилятору, что данный объект « strip » у нас будет использован. По сути, эту команду инициализации пока тоже нужно принять как необходимый минимум.

А дальше у нас уже идет самое интересное — основная часть программы, в которой и происходит волшебство, она находится в теле функции loop (). Но перед этим необходимо ввести новое понятие – цикл.

Цикл — это определенный блок программы, выполняющийся по кругу. Даже сама функция loop () является циклом. Циклы бывают конечными и бесконечными и у циклов так же, как и у функций, есть тело, где написаны повторяющиеся команды. В данной программе мы использовали цикл – for . Если данный цикл описан правильно, то он, как правило, конечен. Цикл for имеет 3 параметра «for(int i = 0; i < LED_COUNT; i++)< >». Первый параметр задает начальное значение для переменной i . Кстати, в данном случае переменная i инициализируется при начале работы цикла и забывается при окончании работы цикла. Второй параметр – это условие, при котором цикл продолжает выполняться. В нашем случае цикл выполняется до тех пор, пока i меньше 5. И третий параметр прибавляет единицу к i , при каждом повторе цикла. Сейчас ограничимся этим коротким объяснением. В дальнейшем у меня выйдет короткая статья, посвящённая программированию.

Итак, вернемся к программе. С 13-ой по 17-ую строку у нас расположен цикл, цикл на 5 повторений, где i меняется от 0 до 4 включительно.

В 14-ой строке мы вызываем метод setPixel , объекта strip и передаем ему два параметра. Где i это номер пикселя на адресной ленте, а « s trip.Color(255, 0, 0)» его цвет. Про то, как задается цвет по системе RGB мы уже говорили ранее. Скажу только очевидную вещь, «255, 0, 0» — это максимально красный цвет.

Получается, когда мы объявили объект strip и передали ему, что в нашей адресной ленте будет 5 пикселей, то в памяти было зарезервировано 5 ячеек, предназначенные для хранения цвета. И теперь в данном цикле мы их заполняем.

В 15-ой строке расположена команда, которая выводит на ленту цвета из памяти в МК (микроконтроллер). То есть последовательность такая: сначала пишем цвета в память, потом разом выводим их на адресную ленту. Изначально пока мы еще не успели заполнить память, там хранятся нулевые цвета «0, 0, 0».

И в 16-ой строке у нас стоит задержка в 300 млс.

Получается, изначально мы имеем 5 ячеек памяти, где записаны только нулевые цвета. Потом в цикле поочередно в каждую из ячеек пишется красный цвет, выводится на ленту и происходит небольшая задержка.

Теперь давайте разберем строки кода с 18-й по 23-ю. Тут происходит практически то же самое. В таком же цикле, мы обнуляем цвета, только это происходит без какой-либо задержки. И данные поступают на адресную ленту уже после выполнения всего цикла, то есть обнуления всех цветов. И уже после этого мы используем задержку.

На мой взгляд все достаточно просто. Светодиоды поочередно загораются красным, а затем гаснут и все это происходит по кругу. Результат выполнения программы вы можете увидеть ниже.

В данной статье мы написали свою первую программу для управления адресной лентой. Теперь Вы сами можете повторить это. Также Вы можете использовать не только красный цвет, но и самостоятельно поэкспериментировать с палитрой и более сложными цветами. А уже в следующих статьях мы постепенно усложним задачу.

Адресные ленты 2811, 2812, 2813. Описание, подключение, отличия.

В отличие от обычной светодиодной RGB-ленты, в которой все светодиоды одинаково реагируют на сигнал с RGB-контроллера, в адресной LED-ленте каждый светодиод получает индивидуальную команду управления. В результате пользователь может максимально точно подбирать оттенок для каждого светодиода, создавать световые эффекты и собирать матрицы с 16 млн цветов. В чём уникальность адресной светодиодной ленты и как научиться ею управлять? Об этом и пойдет речь в данной статье.

RGB светодиодная лента.

На этой ленте стоят RGB светодиоды. Такой светодиод имеет уже 4 выхода, один общий +12 (анод), и три минуса (катода) на каждый цвет, т.е. внутри одного светодиода находится три светодиода разных цветов. Соответственно такие же выходы имеет и лента: 12, G, R, B. Подавая питание на общий 12 и любой из цветов, мы включаем этот цвет. Подадим на все три – получим белый, зелёный и красный, они же в свою очередь дадут много различных цветов и оттенков: жёлтый, розовый, фиолетовый, голубой и так далее. Для таких лент существуют контроллеры с пультами, типичный контроллер представляет собой три полевых транзистора на каждый цвет и микроконтроллер, который управляет транзисторами, таким образом давая возможность включить любой цвет.

Адресная светодиодная лента WS2811, WS2812b

Это вершина эволюции лент. Представляет собой ленту из адресных диодов, один такой светодиод состоит из RGB светодиода и контроллера. Внутри светодиода уже находится контроллер с тремя транзисторными выходами. Благодаря такой начинке у нас есть возможность управлять цветом (т.е. яркостью r g b) любого светодиода в ленте и создавать потрясающие эффекты. Адресная лента может иметь 3-4 контакта для подключения, два из них всегда питание (5V и GND например), и остальные (один или два) – логические, для управления.

Адресная лента управляется по специальному цифровому протоколу. Это означает, что если просто воткнуть в ленту питание не произойдет ровным счётом ничего, то есть проверить ленту без управляющего контроллера нельзя. Если вы потрогаете цифровой вход ленты, то скорее всего несколько светодиодов загорятся случайными цветами, потому что вы вносите случайные помехи, которые воспринимаются контроллерами диодов как команды.

Сейчас популярны два вида ленты: на чипах WS2812b и WS2811. Чип WS2812 размещён внутри светодиода, таким образом один чип управляет цветом одного диода, а питание ленты – 5 Вольт. Чип WS2811 размещён отдельно, и от него питаются сразу 3 светодиода, таком образом можно управлять цветом сегментов по 3 диода в каждом. А вот питание у ленты на WS2811 составляет 12 вольт.

Адресная светодиодная лента WS2813

Адресная лента WS2812B поделена на сегменты, в каждом из которых расположен светодиод и конденсатор (для повышения помехоустойчивости). Относительно напряжения питания все они между собой подключены параллельно, т.е. +5V будет присутствовать на каждом сегменте. А вот передача данных осуществляется последовательно: от предыдущего сегмента к последующему. Поэтому при выходе из строя одного из светодиодов цепи – все последующие сегменты перестанут работать.


Но относительно недавно появилась лента WS2813. В этой ленте добавлена дублирующая линия передачи данных, благодаря этому остальные диоды продолжают работать, даже если один выходит из строя.

Сфера применения адресной ленты

Относительно высокая стоимость светодиодов и лент, собранных на чипах WS2811 и WS2812B, ограничивает их область применения в сравнении с обычными LED-лентами. Главным образом их используют для решения таких задач, с которыми обычной светодиодной ленте не справиться:

  • для сборки полноцветных модулей;
  • в конструировании светильников, управляемых по принципу «soft lights»;
  • в качестве декоративной подсветки чего-либо;
  • в построении LED-видео экранов, используемых в уличной рекламе и шоу-бизнесе.

Интерес к адресной светодиодной ленте среди радиолюбителей вызван тем, что на её основе можно собрать подсветку, которая будет изменять цвет и яркость по заданному алгоритму.

Управление адресной лентой

Управление адресными лентами и модулями производится с помощью специализированного контроллера, внутри которого записана программа. На радиолюбительском уровне управлять работой адресной светодиодной ленты удобней и интереснее через Arduino, используя для этого небольшую программу – скетч.

Схема подключения к Arduino на примере ленты WS2812b

У каждой адресной ленты есть начало и конец, которые нельзя менять местами во время сборки схемы. Чтобы не запутаться, производители используют условные обозначения, например, стрелки, указывающие направление сигнала. Подключение адресной светодиодной ленты WS2812B к Arduino производится по трём проводам, как показано на рисунках ниже.

Цифровой вход ленты идёт напрямую на «сырой» вход микроконтроллера внутри диода, поэтому между ним и управляющим пином ардуино нужен токоограничиваюший резистор с номиналом 100-500 ом, он ограничит ток, и управляющий пин ардуино не будет перегружаться.

Контакты питания +5V и GND соединяют с соответствующими выводами на плате Arduino. Если подсоединяемый отрезок насчитывает более 13-ти светодиодов, то необходимо использовать выносной блок питания. При этом общий провод (GND) Arduino и «минус» блока питания должны быть соединены между собой. Контакт DIN (digital input) предназначен для приёма данных от контроллера и электрически соединяется с любым из его цифровых портов. С другой стороны адресной ленты (и каждого сегмента тоже) размещено 3 контакта: +5V, DO (digital output) и GND, к которым можно подключить ещё несколько отрезков разной длины.

Цифровой вход ленты идёт напрямую на «сырой» вход микроконтроллера внутри диода, поэтому между ним и управляющим пином ардуино нужен токоограничиваюший резистор с номиналом 100-500 ом, он ограничит ток, и управляющий пин ардуино не будет перегружаться.


Так как каждый элемент WS2812B фактически состоит из 3 светодиодов (синего, красного, зелёного), то для управления его свечением потребуется 3 байта (по одному на каждый цвет). В свою очередь, каждый байт может принимать значение от 0 до 255, в результате чего можно задать более 16,5 млн оттенков. Размер скетча будет равен количеству светодиодных сегментов, умноженному на 3. Передача данных происходит следующим образом: ШИМ-драйвер WS2812B первого сегмента забирает из посылки первые 3 байта, пропуская остальные данные на выход DO. Далее следует пауза длиною до 50 мкс, означающая, что второй по счёту драйвер должен принять следующие 3 байта. И так далее. Длительность паузы больше 50 мкс означает конец передачи и повторение цикла.

Управление адресной лентой

Управление адресными лентами и модулями производится с помощью специализированного контроллера, внутри которого записана программа. На радиолюбительском уровне управлять работой адресной светодиодной ленты удобней и интереснее через Arduino, используя для этого небольшую программу – скетч.

Проще всего использовать библиотеки FastLED и Adafruit NeoPixel. Внутри каждой библиотеки есть готовые скетчи, на основе которых несложно научиться самостоятельно создавать новые световые эффекты. Чтобы скетч заработал с первого раза, необходимо в заголовке правильно указать количество светодиодов в ленте (NUM_LEDS) и номер порта для передачи данных (PIN).

Адресная светодиодная лента и её подключение к Arduino

В отличие от обычной светодиодной RGB-ленты, в которой все светодиоды одинаково реагируют на сигнал с RGB-контроллера, в адресной LED-ленте каждый светодиод получает индивидуальную команду управления. В результате пользователь может максимально точно подбирать оттенок для каждого светодиода, создавать световые эффекты и собирать матрицы с 16 млн цветов. В чём уникальность адресной светодиодной ленты и как научиться ею управлять? Об этом и пойдет речь в данной статье.

Технические характеристики

Адресная светодиодная лента состоит из RGB-светодиодов в SMD корпусе 5050 и микрочипов ШИМ-драйверов. В настоящее время наиболее популярными являются адресные LED-ленты с использованием чипов WS2811 и WS2812B. Модификация WS2811 представляет собой интегральную микросхему (ИМС) в корпусе DIP-8 (9,2х6,4 мм) или SOP-8 (5,1х4,0 мм). Данный 3-канальный драйвер имеет следующую конфигурацию выводов:
распиновка

  • 1 – ШИМ-регулируемый выход (красный);
  • 2 – ШИМ-регулируемый выход (зелёный);
  • 3 – ШИМ-регулируемый выход (синий);
  • 4 – общий;
  • 5 – выход передачи данных;
  • 6 – вход передачи данных;
  • 7 – выбор режима работы;
  • 8 – питание +5В.

В адресной ленте с использованием чипа WS2811 и питанием 5 вольт микросхема драйвера располагается в непосредственной близости перед каждым RGB-светодиодом SMD 5050, рядом с которым также установлены токоограничивающие резисторы и конденсатор, защищающий от помех. Но на сегодняшний момент такие модели устарели и встречаются крайне редко. Сегодня в продаже имеются адресные светодиодные ленты на чипах WS2811 только с питанием от +12 В. В этом случае чип WS2811 управляет не одним светодиодом, а группой из 3 штук. LED-WS2811Не успела ИМС WS2811 обрести популярность, как её место заняла более совершенная WS2812B. Данный тип ШИМ-драйвера намного компактнее и размещается непосредственно в корпусе светодиода SMD 5050. Если присмотреться, то под прозрачным люминофором можно увидеть миниатюрный чёрный прямоугольник с отходящими позолоченными проводниками. LED-WS2812BПодобная унификация позволила значительно упростить сборку адресных светодиодных лент и модулей, а сам WS2812B имеет лишь 4 вывода:

  • 1 – питание (+3,5… +5,3 В);
  • 2 – выход передачи данных;
  • 3 – общий;
  • 4 – вход передачи данных.

ИМС драйвера потребляет не более 1 мкА, а максимальный ток одного адресного светодиода составляет 60 мА. Диапазон рабочих температур: от -25 до +80°C.

При выборе адресной светодиодной ленты важным критерием является степень защиты от влаги и пыли. Для использования в уличных условиях подойдут только модели с IP65 и IP67.

Сфера применения

Относительно высокая стоимость светодиодов и лент, собранных на чипах WS2811 и WS2812B, ограничивает их область применения в сравнении с обычными LED-лентами. Главным образом их используют для решения таких задач, с которыми обычной светодиодной ленте не справиться:

  • для сборки полноцветных модулей;
  • в конструировании светильников, управляемых по принципу «soft lights»;
  • в качестве декоративной подсветки чего-либо;
  • в построении LED-видео экранов, используемых в уличной рекламе и шоу-бизнесе.

Интерес к адресной светодиодной ленте среди радиолюбителей вызван тем, что на её основе можно собрать подсветку, которая будет изменять цвет и яркость по заданному алгоритму.

Как это работает?

Адресная лента WS2812B поделена на сегменты, в каждом из которых расположен светодиод и конденсатор (для повышения помехоустойчивости). Относительно напряжения питания все они между собой подключены параллельно, то есть +5 В будет присутствовать на каждом сегменте. А вот передача данных осуществляется последовательно: от предыдущего сегмента к последующему. Поэтому при выходе из строя одного из светодиодов цепи все следующие сегменты перестанут светиться.

Управление готовыми устройствами и модулями на базе WS2812B производится с помощью специализированного контроллера, внутри которого записана программа. На радиолюбительском уровне управлять работой адресной светодиодной ленты удобней всего через 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. Передача данных происходит следующим образом:

  1. ШИМ-драйвер WS2812B первого сегмента забирает из посылки первые 3 байта, пропуская остальные данные на выход DO.
  2. Далее следует пауза длиною до 50 мкс, означающая, что второй по счёту драйвер должен принять следующие 3 байта. И так далее. Длительность паузы больше 50 мкс означает конец передачи и повторение цикла.

Для работы с адресными лентами и модулями проще всего использовать библиотеки FastLED и Adafruit NeoPixel. Внутри каждой библиотеки есть готовые скетчи, на основе которых несложно научиться самостоятельно создавать новые световые эффекты. Чтобы скетч заработал с первого раза, необходимо в заголовке правильно указать количество светодиодов в ленте (NUM_LEDS) и номер порта для передачи данных (PIN).

Где можно приобрести?

Адресную светодиодную лентe без труда можно найти в любом специализированном магазине. Из проверенного варианта, отличающегося не высокими ценниками и хорошим качеством продукта, можно посоветовать интернет-магазин www.giant4.ru. Также адресную LED-ленты можно приобрести и на всем известной площадки AliExpress.com.

Чтобы избежать проблем с некачественной продукцией, при покупке товара на AliExpress стоит внимательно изучать товар и отзывы покупателей.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: