Как подключить адресную светодиодную ленту к ардуино?
Arduino:Примеры/Гайд по использованию светодиодной ленты WS2812B с Arduino
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
![]() ![]() |
Черновик |
Содержание
Гайд по использованию светодиодной ленты WS2812B с Arduino [1]
Это статья об адресуемой светодиодной RGB-ленте WS2812B. Впрочем, информация из этого руководства подойдет и для других похожих светодиодных лент – вроде других лент семейства WS28xx, ленты Neopixel и т.п.
Описание
WS2812B – это адресуемая светодиодная лента, которая поставляется в разных версиях – с разным размером, заполнителем и плотностью светодиодов. Выберите ту, что подходит вам лучше всего.
Где купить?
На фото ниже изображена WS2812B, которую я купил для себя. Ее длина составляет 5 метров, а светодиоды спрятаны за водонепроницаемым силиконом. То есть ее можно спокойно оставить там, где может быть дождливо или даже пыльно.
На мой взгляд, это самый лучший тип светодиодных лент. Вы можете управлять яркостью и цветом каждого светодиода по отдельности, что позволяет делать сложные и очень красивые эффекты.
Светодиоды в ленте WS2812B подключены друг к другу последовательно. Кроме того, каждый светодиод оснащен собственным чипом, что позволяет управлять лентой через 1-проводной интерфейс. Это значит, что вы можете управлять всеми светодиодами на ленте, используя лишь один цифровой контакт Arduino.
На фото ниже показан чип, которым оснащен каждый светодиод. Кроме того, каждый светодиод – это RGB-светодиод.
Светодиодные ленты такого типа – очень гибкие. Их даже можно разрезать, чтобы получить куски нужной длины. На рисунке ниже видно, что лента состоит из сегментов, и каждый сегмент состоит из одного RGB-светодиода.
Разрез нужно делать в специальном месте, которое помечено черной полоской.
На каждом конце полосы находится коннектор. Я решил отрезать коннекторы и припаять вместо них гребешковые контакты. Так удобней, если вы хотите подключить светодиодную полосу к Arduino или макетной плате.
Подключение питания к WS2812B
Ленту WS2812B нужно питать от 5 вольт. При 5 вольтах каждый светодиод, включенный на полную яркость, тянет около 50 мА. Это значит, что все 30 светодиодов одновременно могут тянуть 1,5 А. Поэтому обязательно убедитесь, что ваш источник питания потянет такую нагрузку.
Если вы используете внешний источник питания, не забудьте подключить его заземляющий контакт к контакту GND на Arduino.
Схема
В этом проекте лента WS2812B будет питаться от контакта 5V на Arduino, но этого достаточно, т.к. в моем случае лента состоит всего из 14 светодиодов. Но если хотите управлять большим количеством светодиодов, вам понадобится внешний источник питания.
Полезные советы
- Чтобы смягчить ток, идущий от источника питания, между питающим контактом и контактом GND можно подключить конденсатор номиналом от 100 до 1000 мкФ.
- Чтобы ослабить шум на линии, соединяющей выходной цифровой контакт Arduino и входной контакт светодиодной ленты, между ними можно подключить резистор номиналом от 220 до 470 Ом.
- Чтобы минимизировать потерю напряжения, сделайте провода между Arduino, источником питания и светодиодной лентой как можно короче.
- Если лента не работает, проверьте, исправен ли первый светодиод. Если исправен, отрежьте его, снова припаяйте штырьковые контакты, и все должно заработать.
Чтобы управлять светодиодной лентой WS2812B, вам понадобится библиотека «FastLED». Чтобы установить ее, проделайте следующее:
- Кликните здесь, чтобы скачать ZIP-архив с библиотекой. В итоге он должен загрузиться в папку «Загрузки».
- Распакуйте скачанный ZIP-архив. В итоге у вас должна появиться папка «FastLED-master».
- Переименуйте ее на «FastLED».
- Переместите папку «FastLED» в папку «libraries»IDE Arduino.
- Перезапустите IDE Arduino.
Установив библиотеку «FastLED», загрузите в IDE Arduino скетч, показанный ниже. Его можно просто скопировать и вставить, а можно кликнуть в IDE Arduino на Файл > Примеры > FastLED > ColorPalette (File > Examples > FastLED > ColorPalette), т.к. этот скетч идет в комплекте с библиотекой FastLED, установленной вами ранее.
Примечание: Поменяйте значение в строчке #define NUM_LEDS 14 на количество светодиодов, имеющихся в вашей ленте. В моем случае их было «14».
Демонстрация
В результате светодиодная лента начнет показывать разные эффекты. Вроде такого.
Описание и правильная работа с адресной светодиодной лентой
Если вы житель крупного мегаполиса, то наверняка замечали, как торговые комплексы или бизнес-центры по ночам сверкают подобно телевизору. По ним бегают разноцветные змейки, фигурки, а иногда происходят целые микро-сюжеты. Красочная иллюминация зданий (или архитектурная подсветка) возможна благодаря адресной светодиодной ленте. О ней и пойдет речь в данной статье.
Что это
В отличие от обычной led ленты в адресной каждый светодиод или участок цепи управляется отдельно. Регулирование такой подсветки идет с пульта управления или через запрограммированную плату Arduino .
Технические характеристики
Наиболее качественной и современной является лента ws2812b.
От своих предшественников отличается:
- компактностью;
- простым управлением;
- неограниченным кол-вом последовательно включенных светодиодов.
Максимальный ток, подаваемый на один светодиод ws2812b – 60 миллиампер.
Рабочее напряжение — 5 вольт.
Для каждого светодиода 256 градаций яркости.
Принцип работы
Если рассмотреть в деталях, то можно заметить, что в отличие от обычных led лент рядом с каждым адресным светодиодом находится маленький контроллер (в виде микросхемы) – это и позволяет регулировать их по отдельности.
Обычно лента содержит в себе три-четыре контакта. Два из них питание 5 вольт и ноль, остальные – для управления диодами, логические.
Сфера применения
Работа с адресной светодиодной лентой – удовольствие не из дешевых. Она достаточно дорогая и используется чаще всего в рекламных вывесках и шоу-бизнесе. Программируются иногда целые многометровые экраны с движущейся картинкой. Широко используются такие системы в дизайне. Например, для подсветки дверей, окон или лестницы.
Среди радиолюбителей встречается интеллектуальная подсветка фоторамок, картин, мебели, потолков и плинтусов.
Мы не будем рассматривать масштабные бизнес иллюминации и крупные праздничные проекты. Все, что будет описано ниже, актуально для домашнего пользования.
Как подключить
Подключить адресную ленту ws2812b несложно. Необходимо подать питание через блок питания на 5 вольт и на ленту, плюс и минус. Найти блок питания с нужным напряжением не должно составить труда.
Настройка и управление
После подключения цепи главным образом настраивается выходной сигнал для цифрового управляющего устройства Arduino. После покупки Ардуино нужно скачать софт для программирования с официального сайта производителя.
Arduino используется в учебных проектах для первых шагов практиканта в программировании, электроники и робототехники. С помощью такого устройства в тандеме с дополнительным датчиком можно получать данные температуры, давления, влажности и проч. Индикация идет на светодиодные лампочки.
Например, датчик влажности почвы:
Подробней рассмотреть программирование и разные возможности Ардуино можно в интернете, материалов много. В данной статье стоит задача только в обзорном виде показать, что такое адресная светодиодная лента и как она настраивается.
В программе Arduino всего две библиотеки для программирования светодиодов. Пользователи рекомендуют библиотеку Adafruit NeoPixel. По словам опытных радиолюбителей, в ней рациональное использование памяти, так как нет ничего лишнего. Вторая библиотека FastLED. Тоже отлично справляется со своей задачей, но занимает больше внутренней памяти устройства Ардурино.
Прежде, чем заняться серьезным программированием светодиодов, рекомендуем ознакомиться с этим видео.
Здесь просто и доступно показана элементарная программка:
Какую покупать
Нет смысла приобретать устаревшие образцы. Рекомендуем брать только ws2812b.
Перед эксплуатацией и работой над своими осветительными проектами запомните две вещи:
- Контроллеры светодиодов (впаянные в ленту) при слишком низких температурах могут нестабильно работать и даже выйти из строя.
- После перегорания одного светодиода по цепочке перестанут работать все остальные, так как программная информация не передается дальше. Впрочем, в некоторых моделях стоят доп.контакты передачи данных, и такой проблемы нет.
В заключение
Если вы заой статьи и захотели попробовать сделать несложную иллюминацию из адресной ленты светодиодов, пишите комментарии. А также делитесь статьей в социальных сетях!
Подключение адресной светодиодной ленты WS2812B к Arduino
Опубликовано: 23.02.2017 20:25
Введение
Приветствую всех. Мы продолжаем знакомить Вас со светодиодными лентами. На этот раз мы рассмотрим адресную RGB светодиодную ленту WS2812B. Лента основана на светодиодах WS2812B в корпусе LED 5050, куда в корпус производители поместили не только три встроенных светодиода (Красный, Зеленый, Синий), но и управляемый ШИМ драйвер, управляющий их яркостью. Благодаря этому мы можем получить произвольный цвет, изменяя яркость встроенных светодиодов, а так же управлять отдельно взятым пикселем на ленте. Собственно, три встроенных разноцветных светодиода вместе с ШИМ драйвером и образуют светодиод WS2812B.
Немного запутывает, не правда ли? Светодиод, который содержит себе три разноцветных светодиода, но при этом сам – не светит, а светятся те три, что в него встроены. Поэтому мне проще называть его пикселем, нежели светодиодом. И далее, если я упоминаю пиксель – знайте, что это светодиод WS2812B.
На фото справа вы можете увидеть этот самый светодиод WS2812B, где большой черный прямоугольник это ШИМ драйвер, а вот три встроенных в него светодиода настолько малы, что их с трудом видно, и можно отследить только по золотым нитям, идущим от драйвера к трем разноцветным светодиодам.
Технические характеристики
Теперь давайте немного пройдемся по техническим характеристикам из datasheet который мне удалось раскопать в интернете.
- Светодиод WS2812B работает от напряжения 5В (±0.5).
- Ток
20мА на один встроенный светодиод, то есть
60мА на пиксель в целом.
Остальное можете посмотреть самостоятельно в даташите.
Подключение
Подключается светодиодная лента довольно-таки просто, необходимо подать на +5V и GND, плюс (+) и минус (-) от 5В блока питания, а контакт DIN соединить с портом Arduino, как правило, по умолчанию используется 6-й порт Arduino, но вы вправе выбрать и любой другой свободный порт. Так же рекомендуется соединить земли Arduinoи блока питания, как нарисовано на рисунке ниже.
Будьте внимательны, лента на светодиодах WS2812B имеет направление, с одной стороны она имеет контакты DIN, +5V, GND, а с другой стороны DO, +5V, GND, подключать необходимо именно вход, то есть DIN, иначе лента не будет работать. Так же на ленте нарисованы стрелки, указывающие на направление.
Протокол
Теперь, когда мы разобрались, как подключить нашу ленту к 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 и с большим количеством багов.
-
Библиотека FastLED, разрабатывается Даниэлем Гарсиа и Марком Кригсманом. Имеет свой сайт, справочную систему и большое сообщество в
5000 человек. Библиотека написана на чистом Си, без использования Wiring. FastLED поддерживает все виды Arduino (и не только), а так же умеет работать с кучей различных протоколов и интерфейсов. В том числе и протокол для управления лентами на светодиодах WS2812B.
Теперь давайте напишем наш излюбленный пример Blink, используя обе эти библиотеки, и затем сравним их.
Пример Blink используя ленту WS2812B (с 30 светодиодами) и библиотеку FastLED
Пример Blink используя ленту WS2812B (с 30 светодиодами) и библиотеку Adafruit NeoPixel
Подытожим
Как вы видите из скетчей выше, работать с обеими библиотеками довольно таки просто. Но библиотека FastLED занимает больше места в памяти Arduino, более того чем больше пикселей в вашей ленте тем больше памяти она зарезервирует для своей работы, а точнее 3 байта на каждый пиксель. Таким образом подключить к Arduino можно не более 600 пикселей при использовании минимальной логики. По этому, мне больше приглянулась библиотека Adafruit NeoPixel. В ней только нужное для работы со светодиодными лентами и более рациональное использование памяти. Какую из этих библиотек использовать, решать, конечно, вам. Обе они работают и со своею задачей справляются на 5+.
Ну а мы на этом закончим с обзором ленты. Далее мы сделаем на ее основе несколько проектов, для более наглядной демонстрации, но это уже буду отдельные статьи. Успехов вам и удачи. Оставляйте свои отзывы и комментарии.
Адресная светодиодная лента ws2812 и Arduino
Адресная светодиодная лента – это украшение любого проекта Arduino. С ее помощью вы можете создавать светомузыку, умную подсветку для телевизора, бегущие строки и другие проекты, в которых требуется отобразить информацию на широком экране. Благодаря встроенным контроллерам, вы можете управлять каждым из светодиодов ленты в отдельности, управляя ими как пикселями на экране. В этой статье мы разберемся, как работает адресная светодиодная лента, как ее подключить к Ардуино и какие библиотеки лучше использовать для управления.
Адресные светодиодные ленты
Светодиодная лента – это набор связанных светодиодов, на которые может одновременно подаваться напряжение питания. Обычные ленты хорошо всем знакомы, они используются сегодня повсюду. В адресной светодиодной ленте так же используются светодиоды, но светоизлучающий диод может управляться отдельно и независимо от других. Таким образом, адресные ленты можно использовать для более интеллектуального управления световым потоком на отдельных участках ленты, включая или выключая подсветку в нужное время и в нужном месте.
Сегодня наибольшей популярностью пользуются разноцветные светодиодные ленты 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:
Видео по созданию бегущей строки на базе ленты ws2112
Лента на базе ws2812b
Лента на чипе ws2812b является более совершенствованной, чем ее предшественник. ШИМ драйвер в адресной ленте компактен, и размещается прямо в корпусе светоизлучающего диода.
Основные преимущества ленты на основе ws2812b:
- компактные размеры;
- легкость управления;
- управление осуществляется всего по одной линии + провода питания;
- количество включенных последовательно светодиодов не ограничено;
- невысокая стоимость – покупка отдельно трех светодиодов и драйвера к ним выйдет значительно дороже.
Лента оснащена четырьмя выходами:
- питание;
- выход передачи данных;
- общий контакт;
- вход передачи данных.
Максимальный ток одного адресного светодиода равняется 60 миллиамперам. Рабочие температуры лежат в пределах от -25 до +80 градусов. Напряжение питания составляет 5 В +-0,5.
ШИМ драйверы ленты 8-мибитные – для каждого цвета возможно 256 градация яркости. Для установки яркости нужно 3 байта информации – по 8 бит с каждого светодиода. Информация передается по однолинейному протоколу с фиксированной скоростью. Нули и единицы кодируются высоким и низким уровнем сигнала по линии.
1 бит передается за 1,25 мкс. Весь пакет из 24 бит для одного светодиода передается за 30 мкс.
Пример подключения к ардуино
Любая адресная светодиодная лента имеет начало и конец, которые важно не перепутать во время сборки. На них есть специальные обозначающие стрелки, которые указывают направление сигнала.
Лента ws2812B подключается к Ардуино следующим образом.
Еще один вариант подключения:
Выходы питания с ленты 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 кв.м. через каждый метр.
Соблюдение основных моментов и следование инструкции позволяет самостоятельно подключить адресную светодиодную ленту к вашему проекту.
Arduino и адресная светодиодная лента WS2812B
В этой статье мы научимся работать с адресной светодиодной RGB лентой WS2812B. Лента состоит из RGB пикселей WS2812B в корпусе LED 5050 (физические размеры каждого элемента составляют 5×5 мм).
Каждый пиксель содержит в себе красный, зелёный и синий светодиоды и контроллер ШИМ, с помощью которого можно управлять яркостью каждого светодиода и получать множество различных цветов из трёх основных.
Так как каждый WS2812B состоит из трёх светодиодов и контроллера ШИМ, будет лучше называть их пикселями, а не светодиодами. На фото справа можно увидеть устройство такого пикселя.
Немного о характеристиках адресных светодиодов WS2812B:
- Напряжение питания: 5 ± 0.5 В;
- Потребление тока:
20 мА один светодиод, т.е.
60 мА весь пиксель.
В начале нам необходимо подключить светодиоды к Arduino. Сделать это предельно просто. Контакты +5V и GND подключаем к плюсу и минусу источника питания, соответственно. Din подключаем к любому цифровому пину Arduino, по умолчанию это будет 6-ой цифровой пин, но можно использовать любой другой.
Кроме того, желательно соединить землю Arduino с землей источника питания. Нежелательно использовать Arduino в качестве источника питания, так как выход +5V может обеспечить ток лишь в 800 мА. Этого хватит не более чем на 13 пикселей светодиодной ленты.
С другой стороны ленты есть выход Do, он подключается к следующей ленте, позволяя управлять лентами по принципу каскада, как одной. Разъём питания в конце также продублирован.
Далее будем разобираться с управлением лентой. Описание протокола управления присутствует в Datasheet к WS2812B.
Все пиксели по умолчанию подключены друг к другу последовательно. Вход Din каждого их них подключается к выходу Do следующего. Сигнал управления должен поступать на первый из них.
Команды управления подаются пакетами по 3 байта, по одному для каждого из трёх цветов. Между пакетами идет пауза длительностью 50 мкс, пауза более 100 мкс означает конец передачи.
Длительность любого бита – 1,25 мкс. Бит “1” кодируется импульсом длительностью 0,8 мкс и паузой в 0,45 мкс. Бит “0”– 0,4 и 0,85 мкс. Возможны расхождения по времени до 150 нс. Такой пакет должен быть отправлен для каждого пикселя в светодиодной ленте. На диаграмме изображён требуемый сигнал.
Глядя на данную схему, несложно догадаться, что такое невозможно воплотить в жизнь стандартными функциями Wiring, вроде digitalWrite и delay. Однако ленты WS2812B достаточно популярны и для них уже есть библиотеки на языках более низкого уровня. Вам достаточно только выбрать любую из них.
Самые популярные библиотеки:
Поддерживает все версии Ардуино и множество протоколов передачи данных (не только для нашей ленты). Язык программирования, на котором она написана – чистый C.
Библиотека предназначена для работы со светодиодными кольцами NeoPixel Ring, разработки и производства Adafruit. Работает медленнее, обладает меньшими возможностями, но содержит в себе лишь самое нужное. Написана на C, языке ассемблера и немного на Wiring. Поддерживает всю линейку Ардуино.
Подключение WS2812B в Arduino >
Давайте попробуем обе библиотеки и сравним их. Напишем стандартный скетч Blink, чтобы лента загоралась красным на полсекунды и выключалась на такой же интервал.
По умолчанию, количество пикселей в ленте – 30, но при необходимости это можно изменить в скетче.
Пример с использованием библиотеки FastLED:
Скетч займёт 3758 байт в программной памяти Arduino и 187 байт ОЗУ.
Теперь попробуем тоже самое с библиотекой Adafruit NeoPixel:
Скетч займёт 2592 постоянной и 40 байт оперативной памяти Arduino.
Как можно увидеть, библиотека FastLED более ресурсоёмка. Кроме того, используя её в Arduino с 2 Кб ОЗУ (таковой является, например, UNO) можно управлять не более чем 600 пикселями светодиодной ленты. Это связано с тем, что на каждый пиксель резервируется 3 байта памяти.
А вот в Adafruit NeoPixel минимум нужных функций и меньший расход памяти. Какую из них использовать – ваш выбор. Удачи в проектах!
Товары, используемые в материале
Arduino Uno R3 (ATmega 328P / CH340G)
NeoPixel 12 – кольцо из светодиодов WS2812B
WS2812 – светодиодный модуль (8 светодиодов)
Шлейф проводов «Папа — Папа» (20см, 40шт.)
Самые популярные материалы в блоге
За все время
За сегодня
25 комментариев . Оставить новый
Ваш код не работает. Выдаётся ошибка no matching function for call to ‘CFastLED::addLeds(CRGB [30], int)’ с указанием строки FastLED.addLeds(strip, LED_COUNT);
Вы правили исходный скетч? Если да, напишите, наши специалисты посмотрят и ответят в комментариях.
в первом коде ошибка в инициализации ленты, строку 16 надо заменить на:
FastLED.addLeds (strip, LED_COUNT);
и будет вам счастье))
Огромное спасибо за комментарий! Исправили в коде скетча.
Скажите пожалуйста, можно ли на ардуино подключить с десяток разных лент и каждой управлять отдельно? Вся земля лент так же проходят через минус ардуины?
Здравствуйте! Вся земля лент должна объединяться на единую шину питания данных лент, от ардуино к ленте питание подать не получится (только передачу данных). Количество светодиодов зависит от используемой библиотеки.
В библиотеке FastLED к Arduino можно подключить не более 600 пикселей ленты, используя Adafruit NeoPixel – около 800.
Скажите пожалуйста, а как в таком случае: Если я хочу собрать большой стенд из, допустим 10-000 пикселей, как это делается? Картинка при этом общая. Это каждые 3 матрицы 16*16 необходимо приваривать свой ледпин и стыковать общую картинку? А если картинка-анимация, это усложнит работы в разы
Кто может объяснить как работает DIN и можно ли без ардуино регулировать цвет каждого из светодиодов?
Выше указано что необходимо подавать на пин DIN чтобы светодиоды светились нужными цветами.
А именно подавать на пин напряжение с интервалами в 40-45мкс и 80-85мкс, а так же между пакетами 50мкс и окончание >100мкс.
Удачи!
Всем привет на монохромную ленту какой должен быть код, при добавлении ленты в setap
Что подразумеваете под “монохромностью”. Чтобы она светила черно-белым или нужно просто одним определенным цветом?
имеется адресная лента на 335 диодов. есть желание сделать разбегающийся и сбегающийся стопсигнал. где взять такую библиотеку?
Здравствуйте. Можно посмотреть примеры стандартной библиотеки adafruit, уверены, что бегущий маячок там есть.
Добрый день.
Подскажите а возможно сделать так что бы:
Через ПК я передаю цвет который нужно отправить на ленту.
То есть получается связка ПК- АРДУИНО- ЛЕНТА.
например я на компе выбираю цвет и он отправляется на ленту.
На ПК можно в порт (Serial) отправлять информацию, на ардуиной получать инфу и, собственно, творить…
arduino1507@gmail.com
Здравствуйте ,подскажите как добавить дублирующий выход 12 к имеющемуся выходу 11 чтобы работали синхронно ?
#include
int b1=0;
int b2=0;
int b3=0;
int p_top, p_bottom;
int t_top, t_bottom;
int state_top, state_bottom;
char buf[32];
unsigned long prev_top, prev_bottom;
int pin_bottom = 11;
int pin_top = 13;
int tick = 200;
unsigned long prev_t;
int thermoDO = 4;
int thermoCLK = 5;
int thermoCS_b = 6;
int thermoCS_t = 7;
MAX6675 thermocouple_b(thermoCLK, thermoCS_b, thermoDO);
MAX6675 thermocouple_t(thermoCLK, thermoCS_t, thermoDO);
void setup()
<
Serial.begin(9600);
pinMode(pin_top, OUTPUT);
digitalWrite(pin_top, 0);
pinMode(pin_bottom, OUTPUT);
digitalWrite(pin_bottom, 0);
t_top = 10;
t_bottom = 10;
p_top = 0;
p_bottom = 0;
state_top = LOW;
state_bottom = LOW;
prev_top = millis();
prev_bottom = millis();
>
void loop()
<
if (Serial.available() > 0) <
b3 = b2; b2 = b1;
b1 = Serial.read();
if ((b1 == ‘T’) && (b2 == ‘E’) && (b3 == ‘S’)) <
p_top = Serial.parseInt();
if (p_top 100) p_top = 100;
p_bottom = Serial.parseInt();
if (p_bottom 100) p_bottom = 100;
t_bottom = thermocouple_b.readCelsius();
t_top = thermocouple_t.readCelsius();
sprintf (buf, “OK%03d%03d%03d%03drn”, p_top, p_bottom, t_top, t_bottom);
Serial.print(buf);
>
>
Ребята спасайте. замучился пробовать. С библиотекой Адафруит работает прекрасно и ваш скетч и часы, а с Фастлед ваш тестовый скетч только зажигает нужное количество диодов Белым цветом и стоит не моргает.
Arduino Nano (CH340) v.3 и IDE 1.8.5
“функциями Wiring, вроде digitalWrite и delay. ”
даладно – В ЛЁГКУЮ!, вместо делая просто микроделай юзай
а Диггитал врайт всего 60 тактов тратит – даже на аттини 13 , на 8мГц уже вытянет это!
а если по нормальному делать, то и на 1.2мгц уже справится!
Подскажите, как добавить к скетчу включение и выключение ленты сенсорной кнопкой?
Подскажите почему у меня в скетче написано Red а моргает зеленым?
поменяйте RGB на GRB
Вопрос к знатокам. Подскажите пожалуйста сколько адресных светодиодов можно подключить к ардуино, если питание самих светодиодов будет от блока питания и светодиоды ws2812b расположены на ленте
На сколько памяти хватит. В статье же описано.
какой скачать библиотеку? Adafruit NeoPixel. по ссылке выходит большой список
Просто найдите по названию в менеджере библиотек прямо Ардуино, я лично там нашёл FastLED.