В предыдущей статье я написал про светодиоды с пиксельной адресацией WS2812B.
Пора применить данные диоды на деле. Начну с обычной линейки из 10 светодиодов. Зачем?
Во первых, необходимо научиться работать со светодиодами WS2812.
Во вторых, данные линейки планирую использовать в своем проекте цифро/аналоговых часов с возможностями СДУ, о котором я напишу позже.
Ну и в третьих, такая линейка интересна, как элемент декоративной подсветки, иллюминации, рекламных конструкций, а также динамической подсветки дисплея, аналогичной Ambilight от Philips.
Для ленивых дам совет, можно ничего не паять, а купить светодиодную ленту на WS2812, например, у того же продавца на TAOBAO.COM, где я покупал светодиоды и нарезать ее необходимыми кусками.
Для тех, кому интересно все делать своими руками эта статья.
Для начала полезно посмотреть даташит на WS2812B.
У светодиода Ws2812B четыре контакта: +5В, -5В, вход сигнала и выход сигнала:
Схема подключения примитивно простая.
Плату я буду делать методом лазерно утюжной технологии (Давно пора ее освоить!) . Для начала, проектирую в программе Sprint Layout 6.0.
Здесь можно скачать фал для Spirit Layout 6.0 рисунка печатной платы линейки из 10 светодиодов WS2812B. Для ЛУТ печатать в зеркальном виде.
Описывать ЛУТ я не буду. В интернете о нем очень много написано.
Травлю плату в растворе перекиси водорода и лимонной кислоты. В 100 мл 3% раствора перекиси водорода растворяю 30г лимонной кислоты и чайную ложку поваренной соли. Раствор нетоксичный (по крайней мере до начала травления). Компоненты для травления легкодоступны и стоят копейки.
Скорость травления довольно быстрая. С чистых участков платы сразу начинают идти пузырьки воздуха. При травлении появляется неприятный запах и раствор набирает голубизну.
На 12 линеек 150×15 мм ушло 2 бутылочки перекиси.
С готовой платы тонер счищаю механическим способом пластиковым скребком
Лужу и паяю вручную
Теперь пора заставить работать светодиоды WS2812B
Для этого я использовал готовую библиотеку Adafruit Neo Pixel
Подключаю линейку к 6-пину ардуинки.
Заливаю скетч из примеров данной библиотеки, устанавливаю номер порта и количество светодиодов в линейке
#define PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(10, PIN, NEO_GRB + NEO_KHZ800);
Наслаждаюсь работой демо-скетча:
Как и предполагалось, можно управлять цветом и яркостью каждого светодиода в линейке по одному проводу
Теперь можно изготовить требуемое количество линеек
Весь техпроцесс под жестким контролем.
P.S. При изготовлении линеек мне удалось испортить несколько светодиодов. Нет, не перегревом. Когда паял, фиксировал диоды к плате тем что подвернулось под руку, а именно, маленьким зубастым «крокодильчиком». Так вот, осторожнее, светодиоды WS2812 очень легко повредить механически, так как кристаллы и проводочки там за тонкой прозрачной пленочкой.
Здравствуйте! Огромное спасибо за статью!
Есть вопрос — почему вы решили обойтись без конденсаторов между + и — рядом с каждым светодиодом? Какие последствия такого решения могут быть на линейках с числом 100-150 светодиодов?
Будем считать, что о сэкономил. )))
Последствия — помехи и ошибки в управлении светодиодами. У меня такого не наблюдалось
Спасибо!
Все сразу заработало, в отличие от других авторов поделок.
Я купил готовое «панно» из 4-х вложенных колец со светодиодами.
Внешнее кольцо — 24 светодиода, 8 см диаметр.
Очень красиво моргает.
Привет. Я начинающий в Ардуино. Подскажите, пожалуйста, как залить данный скетч в Mega2560. Готовая лента WS2812B имеется.
sketch_dec01a:15: error: ‘Adafruit_NeoPixel’ does not name a type такая вот ошибка
Видимо нужно установить Adafruit_NeoPixel в папку с библиотеками
Вожусь с этими светиками.
Пока юзал ленту — было норм, а вот как начал свое на платах разводить…
На плате — 4 светика. (Разводка на 18, но пока отлаживаю)
Запускаю, горит второй. Первый и 3-4 подмаргивали при подаче питания, после чего — молчат.
Адресуюсь конкретно на первый, меняю цвет.
Цвет меняется. На втором.
Адресуюсь на третий — тишина!
Матерюсь вторую неделю — сейчас еду за кондеями на тыщу микрофарад, которые в даташите советуют на питание повесить: уже просто версий нет!
С распиновкой светодиодов все правильно? Вход/выход не перепутали?
Когда паял, бывало, не работали плохие контакты.
Спасибо!!!
Не работает.
Каким образом можно физически запараллелить светодиоды? У меня есть задача. 30 светодиодов, первые 10 работают параллельно под одним, остальные 20 каждый под индивидуальным адресом. Возможно это сделать ?
Взять обычные 5050 светодиоды. Коммутировать их MOSFETами, подключенным к одному из WS2812
Годно. Нужно. пожалуй, часы тоже сделать, пикселей много лишних осталось.
Сам сейчас проект небольшой паяю.
Платки крохотные, 3*4 см и на нее 4 шт ws2812b крестом углами друг к другу, с отверстием посередине.
Причем односторонняя разводка…
Конденсаторы и резисторы ставить некуда)
На всякий случай оставил возможность один 3225 резистор на DIN впаять и один SMD 3225 конденсатор между Vcc и Vss.
На всякий случай в начале цепи питания 1000 мФ воткнуть надо бы и резистор на 330 кОм.
В цепочке 3 таких модуля, буду надеяться что не начнут моргать.
не отзеркалил плату, припаял диоды, включил…не загорелись диоды, я их спалил? или есть шанс что выжили?
Лучше один раз попробовать )))
Шанс что выжили есть. Сами по себе светодиоды вполне держат обратное напряжение
А вот с чипом сложнее угадать