Адресная светодиодная лента – это украшение любого проекта Arduino. С ее помощью вы можете создавать светомузыку, умную подсветку для телевизора, бегущие строки и другие проекты, в которых требуется отобразить информацию на широком экране. Благодаря встроенным контроллерам, вы можете управлять каждым из светодиодов ленты в отдельности, управляя ими как пикселями на экране. В этой статье мы разберемся, как работает адресная светодиодная лента, как ее подключить к Ардуино и какие библиотеки лучше использовать для управления.
Адресные светодиодные ленты
Светодиодная лента – это набор связанных светодиодов, на которые может одновременно подаваться напряжение питания. Обычные ленты хорошо всем знакомы, они используются сегодня повсюду. В адресной светодиодной ленте так же используются светодиоды, но светоизлучающий диод может управляться отдельно и независимо от других. Таким образом, адресные ленты можно использовать для более интеллектуального управления световым потоком на отдельных участках ленты, включая или выключая подсветку в нужное время и в нужном месте.
Адресная светодиодная лента WS2811
Сегодня наибольшей популярностью пользуются разноцветные светодиодные ленты RGB-формата, позволяющие получать множество цветов. Благодаря конструкции есть возможность управления цветом каждого светодиода, что позволяет создавать оригинальные световые эффекты. Главное отличие адресной светодиодной ленты от обычной RGB ленты – это наличие специальных контроллеров (конструктивно выполненных в виде микросхем) возле каждого светодиода, что и дает возможность индивидуальной адресации и регулирования каждого оттенка.
Как правило,л ента содержит 3-4 контакта для подключения. Два вывода используются для питания – 5 Вольт и земля, остальные один или два – логический, для управления свечением.
Управление умной лентой производится по цифровому протоколу. Это значит, что без управляющего контроллера управлять устройством нельзя. Кстати, при прикосновении к цифровому входу может загореться несколько диодов – это связано с тем, что появляются помехи, которые контроллер принимает за команды.
Самыми популярными адресными светодиодными лентами являются устройства на чипах WS2812b и WS2811. В первом случае чип находится прямо внутри светодиода, то есть один прибор управляет свечением одного излучающего диода. Питание ленты составляет 5 вольт. Во втором случае чип помещается отдельно, и к нему подключаются 3 диода. Мощность – 12 вольт.
FAQ
Основные вопросы
В: Как скачать с этого грёбаного сайта? О: На главной странице проекта (где ты читаешь этот текст) вверху справа зелёная кнопка Clone or download, вот её жми, там будет Download ZIP
В: Скачался какой то файл .zip, куда его теперь? О: Это архив. Можно открыть стандартными средствами Windows, но думаю у всех на компьютере установлен WinRAR, архив нужно правой кнопкой и извлечь.
В: Компьютер никак не реагирует на подключение Ардуины! О: Возможно у тебя зарядный USB кабель, а нужен именно data-кабель, по которому можно данные передавать
В: Ошибка! Скетч не компилируется! О: Путь к скетчу не должен содержать кириллицу. Положи его в корень диска.
В: Сколько стоит? О: Ничего не продаю.
Купить адресную светодиодную ленту
Ленты ws2812 достаточно распространены на российском рынке, их без труда можно найти в многочисленных специализированных магазинах. Можем посоветовать интернет-магазин Giant4.Ru с достаточно широким ассортиментом различных светодиодных лент и вполне низкими ценами, сопоставимыми с али. Если же есть возможность и желание ждать товар с Алиэкспресса, то ниже мы собрали вместе некоторые популярные варианты у надежных поставщиков:
Адресная светодиодная лент 1m/4m/5m WS2812B 30/60/144 pixels,IP30/IP65/IP67 DC5V | Светодиодная лента DC5V WS2812B 1m/4m/5m 30/60/74/96/144 pixels/leds/m от надежного поставщика | Адресная светодиодная лента DC5V 1m/4m/5m WS2812B |
Как работает адресная светодиодная лента
Принцип работы ленты следующий. Она поделена на сегменты, в каждом из которых находятся светодиод и конденсатор. Они все подключены параллельно, а данные передаются последовательно от одного сегмента к другому. Управление осуществляется контроллером, в котором прописывается программа функционирования. Управлять лентой можно через платформу Ардуино.
Маркировка адресной ленты:
- Black PCB / White PCB – цвета подложки;
- 1м/5 м – длина адресной ленты;
- 30/60/74 и т.д. – сколько светодиодов приходится на 1 метр ленты;
- IP30, IP65, IP67 – степень влаго- и пылезащищенности ленты =.
Адресные светодиодные ленты используются для сборки полноценных модулей, в конструировании ламп с управлением soft lights, для декоративной подсветки, в построении диодных экранов уличной рекламы.
Видео инструкции и ролики
Обучающее видео на канале HomeMade:
Видео по созданию бегущей строки на базе ленты ws2112
НЕКОТОРАЯ ИНФА
- Цвет кодируется 3-мя байтами, то бишь глубина его составляет 24 бита. У нас есть три цвета, каждый кодируется числом от 0 до 255, итого имеем 256*256*256 = 16 777 216 цветов, 16.8 миллионов оттенков может принимать КАЖДЫЙ светодиод в ленте. Цвета при программировании задаются в шестнадцатеричной кодировке вида 0xFFFFFF. Сам цвет здесь задаётся тремя байтами: красный зелёный синий, красный будет FF0000, синий 0000FF, зелёный 00FF00, то есть у каждого цвета есть яркость, которая задаётся шестнадцатеричным числом от 00 до FF. Например бледно жёлтый будет вот так 555500. При использовании библиотеки FastLED вам доступна куча преднастроенных цветов, их названия и коды можно посмотреть здесь.
Надыбать коды цветов можно здесь https://getcolor.ru/
Адресная светодиодная лента – это украшение любого проекта Arduino. С ее помощью вы можете создавать светомузыку, умную подсветку для телевизора, бегущие строки и другие проекты, в которых требуется отобразить информацию на широком экране. Благодаря встроенным контроллерам, вы можете управлять каждым из светодиодов ленты в отдельности, управляя ими как пикселями на экране. В этой статье мы разберемся, как работает адресная светодиодная лента, как ее подключить к Ардуино и какие библиотеки лучше использовать для управления.
Лента на базе ws2812b
Лента на базе ws2812b
Лента на чипе ws2812b является более совершенствованной, чем ее предшественник. ШИМ драйвер в адресной ленте компактен, и размещается прямо в корпусе светоизлучающего диода.
Основные преимущества ленты на основе ws2812b:
- компактные размеры;
- легкость управления;
- управление осуществляется всего по одной линии + провода питания;
- количество включенных последовательно светодиодов не ограничено;
- невысокая стоимость – покупка отдельно трех светодиодов и драйвера к ним выйдет значительно дороже.
Лента оснащена четырьмя выходами:
- питание;
- выход передачи данных;
- общий контакт;
- вход передачи данных.
Максимальный ток одного адресного светодиода равняется 60 миллиамперам. Рабочие температуры лежат в пределах от -25 до +80 градусов. Напряжение питания составляет 5 В +-0,5.
ШИМ драйверы ленты 8-мибитные – для каждого цвета возможно 256 градация яркости. Для установки яркости нужно 3 байта информации – по 8 бит с каждого светодиода. Информация передается по однолинейному протоколу с фиксированной скоростью. Нули и единицы кодируются высоким и низким уровнем сигнала по линии.
1 бит передается за 1,25 мкс. Весь пакет из 24 бит для одного светодиода передается за 30 мкс.
УПРАВЛЕНИЕ С ARDUINO
ВНИМАНИЕ! Во время загрузки и выполнения этого примера должно быть подключено внешнее питание! Иначе выгорит защита по току (диод) на плате Ардуино!
Для управления лентой можно выделить три библиотеки: FastLED, Adafruit NeoPixel и LightWS2812, из всех трёх рекомендую FastLED. Ниже привожу пример кода, который сначала показывает 3 цвета ленты на одном куске, плавно включая диоды. А потом ещё 3 цвета. Ну и ещё что-то, смотрите скетч.
ПРИМЕР 1
#define PIN 13 // пин DI #define NUM_LEDS 16 // число диодов #include «Adafruit_NeoPixel.h» Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800); void setup() { strip.begin(); strip.setBrightness(50); // яркость, от 0 до 255 strip.clear(); // очистить strip.show(); // отправить на ленту } void loop() { // заливаем трёмя цветами плавно for (int i = 0; i < NUM_LEDS / 3; i++ ) { // от 0 до первой трети strip.setPixelColor(i, 0xff0000); // залить красным strip.show(); // отправить на ленту delay(100); } for (int i = NUM_LEDS / 3; i < NUM_LEDS * 2 / 3; i++ ) { // от 1/3 до 2/3 strip.setPixelColor(i, 0x00ff00); // залить зелёным strip.show(); // отправить на ленту delay(100); } for (int i = NUM_LEDS * 2 / 3; i < NUM_LEDS; i++ ) { // от 2/3 до конца strip.setPixelColor(i, 0x0000ff); // залить синим strip.show(); // отправить на ленту delay(100); } delay(1000); // заливаем белым for (int i = 0; i < NUM_LEDS; i++ ) { // всю ленту strip.setPixelColor(i, 0xffffff); // залить белым strip.show(); // отправить на ленту delay(10); } delay(1000); // заливаем чёрным for (int i = 0; i < NUM_LEDS; i++ ) { // всю ленту strip.setPixelColor(i, 0x000000); // залить чёрным strip.show(); // отправить на ленту delay(10); } delay(1000); // включаем случайные диоды жёлтым for (int i = 0; i < 50; i++ ) { // 50 раз strip.setPixelColor(random(0, NUM_LEDS), 0xffff00); // залить жёлтым strip.show(); // отправить на ленту delay(500); } }
Пример с бегущей радугой
ПРИМЕР 2
// пример с «бегущей радугой» для библиотеки FastLED #define NUM_LEDS 144 #include «FastLED.h» #define PIN 6 CRGB leds[NUM_LEDS]; byte counter; void setup() { FastLED.addLeds(leds, NUM_LEDS).setCorrection( TypicalLEDStrip ); FastLED.setBrightness(50); pinMode(13, OUTPUT); } void loop() { for (int i = 0; i < NUM_LEDS; i++ ) { // от 0 до первой трети leds = CHSV(counter + i * 2, 255, 255); // HSV. Увеличивать HUE (цвет) // умножение i уменьшает шаг радуги } counter++; // counter меняется от 0 до 255 (тип данных byte) FastLED.show(); delay(5); // скорость движения радуги }
Пример подключения к ардуино
Любая адресная светодиодная лента имеет начало и конец, которые важно не перепутать во время сборки. На них есть специальные обозначающие стрелки, которые указывают направление сигнала.
Лента ws2812B подключается к Ардуино следующим образом.
Лента ws2812B подключается к Ардуино следующим образом
Еще один вариант подключения:
Подключение ws2128 к Ардуино
Выходы питания с ленты 5В и земля соединяются с соответствующими контактами на микроконтроллере Ардуино. При подключении отрезка с более чем 13 светодиодами потребуется выносной блок питания. Земля и минус блока питания должны быть соединены друг с другом. DINможно подключить к любому цифровому порту на Ардуино. Он используется для получения данных с контроллера.
Цифровой вход ленты идет на вход контроллера, поэтому между ними нужен токоограничивающий резистор номиналом 100-500 Ом. С его использованием нагрузка на пин будет ниже. На другом конце ленты также есть 3 контакта, к которым можно подключить отрезки различной длины.
Каждый блок ленты состоит из трех светодиодов. Соответственно, для управления подсветкой потребуется 3 байта – по одному на каждый свет. Каждый байт принимает значение от 0 до 255 – это значит, что есть возможность задания более 16 миллионов оттенков.
Данные передаются следующим образом:
- ШИМ драйвер забирает первые 3 байта, остальные передаются на выход D0;
- затем пауза длительностью 50 мкс;
- второй драйвер принимает следующие 3 байта.И так далее.
- Когда длительность задержки становится более 50 мкс, передача окончена и начинается второй цикл.
Причины проблем при работе с адресной светодиодная лентой:
- неправильное соединение с землей;
- сигнальный провод идет не в начало схемы;
- перепутаны земля и 5 В;
- если получаются цвета ближе к красному, проблема с блоком питания, пайкой линии или слишком тонкие провода;
- после подключения без резистора пин на Ардуино может сломаться, поэтому придется переключать на другой.
ПОЧЕМУ НЕ РАБОТАЕТ?!
- Убедись, что земля ленты соединена с землёй ардуино КАК НА СХЕМЕ
- Убедись, что сигнальный провод идёт в начало ленты (контакт DI) КАК НА СХЕМЕ
- Убедись, что не перепутал 5в и GND. КАК НА СХЕМЕ
- Цвет отдаёт в красный? У тебя слабый БП, некачественная пайка линии питания или слишком тонкие провода питания
- Подключил без резистора и теперь не работает даже с резистором? Пин ардуино отбросил ласты, подключай в другой