Авторизация
Регистрация

Напомнить пароль

Анимируем статичную гирлянду с помощью ATtiny13

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

Исходные данные

У меня скопилось великое множество самых разных гирлянд, среди них есть как простые советские на лампочках, так и модные нынче на адресных светодиодах. Когда играться с режимами последних мне надоело, я пришел к выводу, что это все баловство, и самый оптимальный вариант гирлянды — это та, которую включил один раз и забыл. Самыми удобными мне показались USB гирлянды на 30-40 лампочек длиной 4-6 метров. Они недорого стоят, их удобно хранить за счет небольшой длины и можно воткнуть куда угодно, т.к. потребление у них мизерное. Единственный минус — такие гирлянды в основном абсолютно статичны, т.е. при работе просто светятся и не имеют никаких спецэффектов. Еще в прошлом году я заказывал сразу кучу разных USB гирлянд, среди них мне больше всего понравились такого типа:

Заказывал здесь. Это примитивная гирлянда на 30 светодиодов длиной 4.5 метра, которая питается от любого USB порта и во время работы просто светится по всей длине:

В ней чередуются светодиоды 4х цветов: красного, желтого, зеленого и синего. Есть и варианты с просто белыми/теплыми вариантами светодиодов:

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

Они сделаны из прозрачной эпоксидки и наполнены пузырьками, на которых красиво рассеивается свет, создавая эффект шара со снежинками:


В техническом плане гирлянда ничего сложного и интересного не представляет, на конце обычный USB разъем со встроенной в него парочкой гасящих резисторов:

А все светодиоды подключены параллельно, на всю длину гирлянда имеет всего 2 провода:

Потребляет это поделие всего 90мА, поэтому его можно питать от любого подвернувшегося USB порта:

Я, например, втыкаю свои в порты телевизора, ТВ приставки, в старые ненужные зарядники от телефонов — везде работает отлично.

Теория

Несмотря на то, что провода в данной гирлянде всего 2, мы с помощью хитрости можем заставить ее мигать двумя группами светодиодов независимо друг от друга. Хитрость эта называется Charlieplexing, и ей уже сто лет в обед. Заключается она в том, что можно подключить светодиоды разной полярностью к общей шине и управлять ими отдельно с помощью изменения полярности на шине:

Особенно легко это делать при помощи микроконтроллера: подаем на вход X1 логическую единицу, на X2 — ноль, в итоге горит LED1. Инвертируем (X1 — ноль, X2 — единица) — горит LED2, таким образом мы имеем возможность по всего двум проводам независимо управлять двумя отдельными светодиодами. Если переключать выходы с большой частотой, по визуально будут гореть оба светодиода, причем с помощью изменения длины периода можно менять и яркость, т.е. это фактически обычный двухполярный ШИМ. На самом деле Чарлиплексинг не ограничивается двумя светодиодами, это для него вообще самый примитивный случай. Обычно в реальности эта техника используется для управления всякими матрицами светодиодов с использованием сильно меньшего количества пинов микроконтроллера. Но у такого подхода есть существенный минус: мерцание и падение яркости с ростом количества коммутируемых светодиодов, от этого никуда не деться.

Практика

Для управления светодиодами будем традиционно использовать микроконтроллер ATiny13, причем питать светодиоды мы будем напрямую с пинов контроллера, а для повышения максимального отдаваемого тока мы запараллелим по паре пинов. О допустимости такого подхода ходят споры, но на деле лично я проблем никогда не замечал, по моему опыту этот МК вообще нереально убить практически ничем. Каждый пин t13 может отдавать до 20мА, для двух пинов получаем до 40мА, чего должно быть достаточно для питания половины гирлянды почти без потери яркости (т.к. вся она потребляет 90мА, см. выше). Общая схема:

Здесь C1 — конденсатор на 0.1-1 мКф, R1 — резистор на 10-20 Ом. Питать напрямую от МК можно гирлянду длиной 15-30 светодиодов, не больше. Для гирлянд большей длины придется городить усилитель на полевиках, что-то типа такого:

Бинарник прошивки и исходники можно скачать тут.
Внимательных читателей заинтересует, как же осуществляется переключение режимов, если на схеме нет ни одной кнопки? А хитрость в том, что я пошел по пути, который используется в фонариках, и режимы здесь переключаются быстрым отключением-включением питания схемы. Причем последний использованный режим запоминается спустя примерно минуту работы, так что каждый раз заново перебирать все режимы в поисках наиболее понравившегося не нужно. К слову, можно легко реализовать переключение и по кнопке — для этого достаточно включить ее между RESET и VCC микроконтроллера. Режимы работы мы рассмотрим позже, а пока нам нужно немного пошаманить над самой гирляндой, т.к. у нее все светодиоды подключены параллельно. У каждого второго светодиода снимаем рассеиватель, в моем случае это синие и зеленые диоды:

Светодиод сидит на термоклею, для более легкого съема «плафон» можно погреть феном. Снимаем старую термоусадку:

Между контактами имеется кусок пластика, его не выкидываем — он нужен для предотвращения замыкания. Каждый второй светодиод таким образом перепаиваем на обратную полярность и собираем в обратном порядке. Новая термоусадка:

Диаметр 4.8мм, брал тут, на всю длину гирлянды хватит отрезка длиной 50см. Усаживаем:

При усадке каждого светодиода важно проверить, что нигде ничего не замкнуло или не пропал контакт. В конце надеваем рассеиватели и проверяем все еще раз, подав на вход гирлянды 5В через 100 Ом резистор:

Если все сделано верно, гореть должны при этом только сине-зеленые или красно-желтые светодиоды, а при смене полярности питания — наоборот:

Для электронной начинки было лень разводить и травить свою плату, поэтому первый прототип я решил сделать с помощью платы-переходника SSOP8:

А размещаться все это будет в сборном USB type A разъеме:


Для большей компактности пришлось немного подрезать как пластиковую часть коннектора, так и переходник микроконтроллера:

Запаиваем микроконтроллер и параллелим пины:

Далее я буквально навесным монтажом разместил на разъеме конденсатор и припаял плату с МК:

Два средних пина из разъема я вытащил, чтобы конденсатор уместился и не замыкал. Аналогичным образом на весу припаян 1206 резистор на 10 Ом:

Ни к какой красоте я здесь не стремился, это чисто демонстрационный прототип для проверки работоспособности идеи. Для реального использования я планирую чуть позже развести и заказать нормальные платы. Дабы ничего не отвалилось во время испытаний я залил плату эпоксидкой, и после сборки на конце гирлянды имеем обычный USB разъем, про который с виду и не скажешь, что он несет в себе какую-то хитрую логику:


Результат

Всего в прошивке 11 режимов, среди них:
  • Автоматический — в нем все мигающие режимы переключаются по кругу через определенный интервал времени
  • Статический — горят все диоды одновременно, как было изначально
  • 9 видов мигалок, у каждой из которой есть 3 скорости (медленно, средне, быстро)
Переключение между режимами, как вы догадываетесь, осуществляется перетыканием USB разъема, что при активном использовании может сократить срок службы порта на питающем устройстве, но на деле скорее всего в 99% случаев при первом же включении будет установлен автоматический режим, в котором гирлянда будет работать практически всегда. Но при большом желании в корпусе разъема можно уместить и микропереключатель.

Итак, предлагаю посмотреть, как работают всякие мигалки.
Самая первая — просто мигание всеми светодиодами одновременно:

Далее идет поочередная мигалка:

«Полицейская» мигалка:

Поочередная мигалка «с нахлестом»:

Поочередная мигалка «с нахлестом» №2:

Плавная мигалка всеми светодиодами:

Плавная поочередная мигалка:

Плавная поочередная мигалка «с нахлестом»:

Плавная поочередная мигалка «с нахлестом» №2:


Итог

Описанным образом можно оживить практически любую статичную гирлянду, если в ней не очень много светодиодов. Хотя на рынке в наши дни полно готовых гирлянд и контроллеров к ним, на сделанную своими руками смотреть гораздо приятнее)
Добавить в избранное
+192 +276
свернутьразвернуть
Комментарии (75)
RSS
+
avatar
+19
  • vigos
  • 10 декабря 2021, 17:36
Просто и изящно!
+
avatar
+1
  • KohINoor
  • 10 декабря 2021, 17:43
А не будет ли так, что ток поделится на 10 и 30 мА, а не ровно по двадцать из-за неидеальности камня? Тогда последний долго не протянет.
+
avatar
+1
  • rx3apf
  • 10 декабря 2021, 17:50
Не будет, характеристики идентичны с высокой точностью, и, в конце концов, там еще и внутренне сопротивление весьма солидное. Хотя правильнее драйверок присобачить. Но не так, как показано (это повторитель), а в ключевом режиме.
+
avatar
+6
  • SinuX
  • 10 декабря 2021, 17:54
Есть ненулевая вероятность, но по личному опыту могу сказать, что t13 кремень тот ещё) У меня еще ни разу не выгорали пины даже при КЗ, а происходят они регулярно при программировании прищепкой. Более длительные КЗ тоже проблем не вызывали, как и неправильная полярность питания — один раз перепутал и забыл на пару часов, а когда обнаружил МК был как утюг, но не сдался)
+
avatar
0
  • KohINoor
  • 10 декабря 2021, 17:59
Живучий, однако)
+
avatar
+2
  • uyka60
  • 10 декабря 2021, 18:40
Подтверждаю, после подключения с неправильной полярностью ATtiny 13, ATtiny 85 сохраняют работоспособность (после остывания конечно)))
+
avatar
+3
  • muraveiX
  • 11 декабря 2021, 10:49
Слабаки, а мне удалось спалить тини26, на макете ему на питание упал провод с 30 вольтами! :)
Я был сильно удивлен, что тини не устоял.
+
avatar
0
После такого иногда начинаются странные глюки. То не шьется, то на каких-то пинах шим не включается и прочее. Причем глюки трудноуловимые и слабопредсказуемые. Если прошивка банальный ногодрыг — то скорее всего ничего заметно не будет, а если по полной используется встроенная периферия — жди сюрпризов. Короче, не надо так.
+
avatar
+1
Выходные транзисторы при перегрузке начинают работать как ИСТ, но общее ограничение тока на все порты суммарно — не более 70мА. Сопротивление у них довольно высокое, поэтому приличный нагрев обеспечен.
+
avatar
+20
  • Falqcon
  • 10 декабря 2021, 17:44
Люблю такие предновогодние обзоры, создают настроение
+
avatar
-3
Ооо, народ подтягивается. Это хорошо.
+
avatar
0
  • ABATAPA
  • 10 декабря 2021, 18:03
Но с управляемыми не сравнится…
+
avatar
+4
  • Vedemon
  • 10 декабря 2021, 18:07
СТОЛЬКО манипуляций ради простого моргания… Дешевле взять гирлянду по акции, они постоянно перед Н.Г. мелькают. Ну например:: www.dns-shop.ru/product/b7a6ae1319c92ff2/girlanda-luazon-lighting-703309-mnogocvetnyj/
15 метров от сети. За 360 рублей!.. Эффекты те же, но куда дешевле и не надо переделывать каждый второй диод. Но за работу — плюс.
+
avatar
+32
  • SinuX
  • 10 декабря 2021, 18:09
Это не путь самурая)
+
avatar
+3
  • Vedemon
  • 10 декабря 2021, 18:24
Согласен. Завидую автору, у него есть столько свободного времени %)
+
avatar
+16
  • Lvr
  • 10 декабря 2021, 19:12
Времени у всех нас одинаково. И понятие свободности времени субъективно и относительно. Время, проведённое с удовольствием, потраченным не считается…
… к чёрту философию и демагогию. Автору уважение! Красивое решение.
+
avatar
+1
  • Vedemon
  • 10 декабря 2021, 19:28
С последней фразой согласен. С предыдущим АБЗАЦЕМ — нет ;)
+
avatar
+1
А если по выходу поставить такой драйвер, то все сомнения по поводу перегрузки выходов МК отпадают. И… можно сделать пару гирлянд… Ценник, если поискать рублей от 40. Называется «Драйвер шагового двигателя постоянного тока L9110s»
+
avatar
0
  • dinogen
  • 10 декабря 2021, 18:14
Шаман!
+
avatar
+3
  • Skylab
  • 10 декабря 2021, 18:18
Прикольно. Затраты — копейки, зато эффект на сто рублей.
+
avatar
+2
  • katran
  • 10 декабря 2021, 22:57
уже не копеечные атинки стали дорогие
+
avatar
+2
  • MadDad
  • 11 декабря 2021, 20:24
Могу насыпать кучу тини13 по оптовым ценам, которые были 6 лет назад. Ннада?
+
avatar
0
  • katran
  • 11 декабря 2021, 20:58
Думаю цена доставки всё сведёт в минус ^_^
+
avatar
+1
  • MadDad
  • 11 декабря 2021, 21:05
Отож… Если посылка первым классом, то 220рубликов. Не умеют у нас, как в китае, за 20-30р доставлять. Но если взять сотню, то наценка не велика). Ну или самовывозом из рязани.
+
avatar
+3
  • mike888
  • 10 декабря 2021, 18:25
Можно просто взять RGB slow flashing диоды и не надо никаких ардуин
+
avatar
+1
Они начнут потом хаотично мигать, периодически совпадая по фазе… очень не то.
На днях такие с МЫШКИ выпаял… их там целых 3 штуки зачем-то стояли и они все постоянно мигали НЕСИНХРОННО. Тошнить хотелось от такой мыши.
+
avatar
+2
  • mike888
  • 11 декабря 2021, 10:13
Не совпадают, только при старте, потом полная рассинхронизация. В Икее такую гирлянду увидел, но земноводное запретило столько денег отдавать. В результате нашел у китайцев диоды и собрал.
+
avatar
+1
так для гирлянды это по-моему только плюс
+
avatar
0
  • rx3apf
  • 12 декабря 2021, 22:00
Брал несколько раз — что-то они не сильно радуют. А именно — затянутый «красный» и практически нет промежуточных (желтый, малиновый, бирюзовый, белый) цветов. Что-то у них неправильное с циклограммой… Игрался током — не влияет.
+
avatar
0
те что у меня в обзорах тоже? не замечал проблем с цветами
+
avatar
0
  • rx3apf
  • 12 декабря 2021, 22:49
Я брал достаточно давно, искал диффузные 5mm ( впрочем, как-то купленные прозрачные 3 mm вели себя так же), и во всех случаях такая вот неприятная аномалия.
+
avatar
0
  • mike888
  • 12 декабря 2021, 22:53
Не заметил проблем, может это индивидуальные со зрением, а не с диодами
+
avatar
0
  • rx3apf
  • 12 декабря 2021, 23:03
Когда я реализовывал смену цветов на обычном RGB-светодиоде, получался нормальный переход между цветами. А вот у готовых — промежуточных просто нет (почти нет), а фаза «красного» раза в два-три больше, чем у зеленого и синего. Зрение тут совершенно не причем. Но, возможно, это мне так не повезло с покупкой (но три раза, у разных продавцов).
+
avatar
+5
  • BrB
  • 10 декабря 2021, 18:29
Обзор очень хороший.
Как заметили выше — новогодний.
Но все это дело для тех кто «умеет паять» и усидчив (перебрать всю гирлянду условно «лампочку» за лампочкой — это вам не проводок порта USB подпаять на плате — по тщательности...)
Для основной массы населения /женщины, дети и военные алкоголики с тремором рук /это не доступно, но очень, очень интересно и по новогоднему :)
Плюсую от души.
+
avatar
0
Кстати, отличная тема заняться с ребенком, научить его паять заодно. Самому перепаивать половину гирлянды только потому что могу, ну не знаю.
+
avatar
+1
  • mooni73
  • 10 декабря 2021, 18:37
На гитхабе в описании опечатка: R1: 10 to 20 uF
+
avatar
0
  • SinuX
  • 10 декабря 2021, 18:39
Благодарю)
+
avatar
+9
Вот пример реального неоверинжиниринга вместо «поставить стм или есп», которые болтаются потом 99.999% времени в айдле.

Правильный проц для правильной задачи — респект и уважуха!
+
avatar
0
Тинька стоит относительно дорого, так что правильно было бы другой микроконтроллер использовать.
+
avatar
+2
«Правильно» зависит очень от многих вещей.

Я же говорил именно про правильное применение с точки зрения возможностей процессора и его мощности.

Если вы знаете аналогичный проц в дипе с нормальной документацией и хотя-бы на 20 центов дешевле (тинька стоит около 0.85$) — с удовольствием послушаю про него.
+
avatar
+2
  • MadDad
  • 11 декабря 2021, 20:46
Если кто в рязани, могу отсыпать тини13 дешевле 0,4$.
А вообще под данную поделку больше вот такие гирлянды подходят, их можно взять две, три, четыре разных цветов и соединиьт в одну линию, и управлять каждой отдельным пином, если не хватит мощи, поставить по полевичку типа irml0040.
+
avatar
+2
ну вот то что тиньки довольно дорогие это минус, но в целом поддержу StainlessSoul — это прекрасный пример как НУЖНО выбирать железо под задачу. сейчас конечно всех развратили дешманскими мощными микроконтроллерами, но на самом деле должно-то быть именно так как тут описано. простая задача — простейший МК
+
avatar
+3
  • dop2000
  • 11 декабря 2021, 02:22
Только raspberry pi, на меньшее я не согласен!
+
avatar
+4
  • Aahz
  • 10 декабря 2021, 19:19
Автор молодец
Для тех, кто паять не будет, китайцы уже реализовали нечто подобное:
https://aliexpress.com/item/item/1005001537880472.html
Штора 3*2 за $4.90, есть разные размеры
Управление с пульта, 8 программ, тот же чарлиплексинг на 2 канала, регулировка яркости. Ток до 200 мА. Шим на 100Гц.
+
avatar
+42
  • ACE
  • 10 декабря 2021, 19:47
Мне лень писать обзор, но похвастаться хочется, так что прошу у автора прощения, что влез :)
Я сделал снежинку из ленты с адресными диодами. Диаметр чуть больше метра. Основа — полосы алюминия и напечатанные соединения. С улицы видна издалека и смотрится хорошо. 150 диодов, управляется esp8266. В прошлые года делал мелкие снежинки, использовал stm32f030, но тут стало не хватать памяти под буфер, проще стало взять esp8266, хоть wifi и не используется. 16 эффектов (не считая зеркальных, в обратную сторону и т.п.), 13 цветовых палитр, переходы между эффектами плавные. Дальше фантазия закончилась :)

Дополнительная информация

Видео с изнанки, но так камера даже лучше передаёт цвета.

+
avatar
+8
Таки да, пишите обзор.
Готов повторить! )))
+
avatar
+2
Готов повторить, пока до нового года есть время, если лень писать обзор и не жалко поделиться, залейте скетч и схему куда-нибудь на файлообменник и скиньте ссылку, плиз, очень уж завораживает. В прошлом году хотел подобное сваять, но не хватило времени.
+
avatar
+1
  • nik_nik
  • 15 декабря 2021, 05:42
Интересная снежинка. Сам думал как разукрасить окно на новый год. Делал квадратную матрицу из адресных светодиодов. Все приедается.Снежинка как то добрее теплее, «новогоднее» что ли.
То же готов повторить конструкцию, на каких возможно условиях автора
+
avatar
+8
Похвастуюсь своей чтоли, ёлочная гирлянда на адресных светодиодах, с управлением по ESP8266 через web интерфейс по Wi-Fi. Скетч взят с ГитХаб, прошивка WLED.
+
avatar
0
А сколько у вас диодов? Я взял две штуки по 50 диодов, без мозгов. По ~$7.20 за гирлянду минус красные купоны.
Теперь думаю о мозгах. Как раз есть 2 штуки ESP 12F
+
avatar
0
На алике видел кучу контроллеров для адресных лент с управлением по вайфаю или блютусу и множеством эффектов. Недорого. Это если совсем не хочется заморачиваться. Я себе закупил несколько, но пока руки так и не дошли с ними поиграться, прошлогодние поделки на ардуинах как-то устраивают.
+
avatar
+1
У меня 150 шт, 3 шт по 50 последовательно
+
avatar
0
  • GreySP
  • 11 декабря 2021, 09:03
Суперррр!!! Пиши! Повторить смогу но не буду, полно других гирлянд, но вот если соседи какие нибудь захотят и замутят себе, тогда порадуюсь за них — новый год душевней станет.
+
avatar
0
  • ivancik
  • 15 декабря 2021, 10:20
Класс! Это не по периметру окна обвес сделать!
+
avatar
0
  • niorix
  • 26 декабря 2021, 08:13
Исходники в студию!
+
avatar
+1
  • ACE
  • 26 декабря 2021, 11:54
Исходники? У меня есть лучше :)
+
avatar
0
большое спасибо, очень познавательно
+
avatar
0
  • Stress
  • 11 декабря 2021, 08:16
Заслуженный лайк!
+
avatar
0
  • NevGi
  • 11 декабря 2021, 12:24
Вопрос не в тему. На моське был обзор спиц с пружинами, для программирования впаяных микроконтроллеров или съема сигналов. Спицы вроде крепились прищепками. Без цанговых захватов ножки, просто спицы.
Никак не могу найти.
+
avatar
0
  • Dimon_
  • 11 декабря 2021, 14:29
Делал подобное в начале 2000-х, на Атмеле 2313, когда он ещё не был Attiny, а был AT90s.
Только гирлянду собрал на светодиодах, которые встречно-параллельно были красными и зелёными. Двухвыводный светодиод диаметром 3 или 5мм, который от полярности включает красный или зелёный кристалл.
А дальше всё, как описано у автора: полярность (с умощнением мостом) и ШИМ. Было даже чуть красивее, поскольку каждый огонёк на ёлке мог плавно менять цвет от красного до зелёного через оранжевый, жёлтый и салатовый. Ну и мигалки всех возможных разновидностей. У 2313 пинов много, поэтому на ёлке размещалось сразу две подобные гирлянды, что ещё больше увеличивало количество эффектов.
Автору спасибо, плюс.
+
avatar
+1
  • magic12
  • 11 декабря 2021, 15:35
Отличная работа! Однозначно «плюс»!
Осталось только Attyny-ек за копейки найти (или выпаять откуда-нибудь) и обвешаем все новогодние елки такими гирляндами :-)
+
avatar
0
  • ksiman
  • 13 декабря 2021, 09:31
а для повышения максимального отдаваемого тока мы запараллелим по паре пинов.
Более правильно каждый пин через свой токоограничивающий резистор подключать. Да, потребуется 4 резистора вместо одного, зато пины не сгорят при отладке прошивки.
+
avatar
0
  • unnk2004
  • 13 декабря 2021, 10:17
Что-то не могу понять каким образом в некоторых режимах у вас одновременно горят оба цвета при таком подключении? Попеременное включение на высокой частоте со скважностью 50%? Яркость в этом случае должна быть ниже…
+
avatar
0
  • urcda
  • 13 декабря 2021, 10:48
А чем прошивали?
+
avatar
0
С некоторых пор Attiny13 нельзя назвать дешевым микроконтроллером. Зачастую за его цену можно взять китай-ардуину со значительно более мощным камнем на борту и обвязкой.
+
avatar
0
Именно. ESP8266 стоит 150 рублей аж за целую плату с усб интерфейсом, а тинька13 целых 90 рублей. Полноценная плата на 88 тиньке 120 рублей.
+
avatar
0
  • SerjZzz
  • 22 декабря 2021, 12:46
Уважаемый автор, если не затруднит подскажите, можно ли сделать тоже самое на другом контроллере, не на Attiny13, у меня есть ардуина, можно ли ее использовать? контроллер от такой гирлянды перестал работать, перерыл кучу интернета, на ардуино только 3х проводное подключение, а в гирлянде только 2 провода :))) буду благодарен за любую помощь.
+
avatar
0
  • SinuX
  • 22 декабря 2021, 18:39
Можно и на arduino или digispark, нужно лишь исходники адаптировать под нужный мк
+
avatar
0
  • SerjZzz
  • 22 декабря 2021, 20:18
у меня пока что вопрос по подключению, я не могу найти инфу как подключить гирлянду к ардуине, дальше может по каким то урокам разберусь, но если кто то сможет подсказать, буду благодарен
+
avatar
0
  • Glory
  • 23 декабря 2021, 00:48
Подключил такую (подобную) гирлянду к Arduino Nano. Она состоит из 20 светодиодов 4 цветов (по 5 каждого цвета), включенных параллельно. В штекере USB гасящий резистор. Как и автор, перепаял половину светодиодов. Изначально гирлянда потребляла ток 108 мА. Теперь ток уменьшился вдвое. К разъему USB (мама) припаял два проводка, которые подключил к 10 и 11 пинам Ардуинки (эти пины находятся рядом и поддерживают ШИМ). По документации максимальная нагрузка цифровых выходов — 40 мА. Каждая половина гирлянды потребляет 54 мА (при постоянном свечении). Но пока «полет нормальный», порты не думают выгорать. Коммутация половин гирлянды осуществляется поочередной подачей на 10 и 11 пины «1» и «0». Скетч писал сам. Реализованы «одновременное» свечение всех светодиодов гирлянды, поочередное зажигание каждой половины на 1 секунду, поочередное плавное нарастание и затухание яркости свечения каждой из половин гирлянды, частое мигание всей гирлянды в течение нескольких секунд и т. д.

Скетч
//включение гирлянды на светодиодах, включенных встречно-параллельно
//гирлянда подключается к 10 и 11 пинам
//коммутация диодов выполняется сменой полярности

void setup() {
  pinMode(10, OUTPUT);      //объявляем 10 и 11 пины как выходы
  pinMode(11, OUTPUT);
}

void loop() {               //
  for(int i=1;i<500;i++){   //цикл, в котором на несколько секунд зажигаем все цвета
  digitalWrite(10, LOW);    //сначала на 8мс зажигаем красный+желтый
  digitalWrite(11, HIGH);
  delay(8);
  digitalWrite(11, LOW);    //затем меняем полярность и на 8мс зажигаем синий+зеленый
  digitalWrite(10, HIGH);
  delay(8);
}
  digitalWrite(10, LOW);    //гасим гирлянду (на 11 пине после выхода из цикла 0)
  
  for(int i=1;i<5;i++){     //цикл на 4 повторения - поочередно зажигаем красный+желтый и синий+зеленый 
  digitalWrite(10, LOW);    //зажигаем на 1 секунду красный+желтый
  digitalWrite(11, HIGH);
  delay(1000);
  digitalWrite(11, LOW);    //зажигаем на 1 секунду синий+зеленый
  digitalWrite(10, HIGH);
  delay(1000);
}
  digitalWrite(10, LOW);    //гасим гирлянду (на 11 пине после выхода из цикла 0)
  
  for(int i=1;i<3;i++){     //цикл на 2 повторения
  digitalWrite(10, LOW);    //плавно зажигаем и гасим красный+желтый
  analogWrite(11, 15);      //в цикле на 11 пине выставляем напряжение от 0 до 5 вольт (аргумент соответственно от 0 до 255)
  delay(100);               //удерживаем это напряжение на 0.1с
  analogWrite(11, 31);
  delay(100);
  analogWrite(11, 47);
  delay(100);
  analogWrite(11, 63);
  delay(100);
  analogWrite(11, 79);
  delay(100);
  analogWrite(11, 95);
  delay(100);
  analogWrite(11, 111);
  delay(100);
  analogWrite(11, 127);
  delay(100);
  analogWrite(11, 143);
  delay(100);
  analogWrite(11, 159);
  delay(100);
  analogWrite(11, 175);
  delay(100);
  analogWrite(11, 191);
  delay(100);
  analogWrite(11, 207);
  delay(100);
  analogWrite(11, 223);
  delay(100);
  analogWrite(11, 239);
  delay(100);
  analogWrite(11, 255);
  delay(400);
  analogWrite(11, 239);
  delay(100);
  analogWrite(11, 223);
  delay(100);
  analogWrite(11, 207);
  delay(100);
  analogWrite(11, 191);
  delay(100);
  analogWrite(11, 175);
  delay(100);
  analogWrite(11, 159);
  delay(100);
  analogWrite(11, 143);
  delay(100);
  analogWrite(11, 127);
  delay(100);
  analogWrite(11, 111);
  delay(100);
  analogWrite(11, 95);
  delay(100);
  analogWrite(11, 79);
  delay(100);
  analogWrite(11, 63);
  delay(100);
  analogWrite(11, 47);
  delay(100);
  analogWrite(11, 31);
  delay(100);
  analogWrite(11, 15);
  delay(100);
  analogWrite(11, 0);
  delay(400);
  digitalWrite(11, LOW);    //плавно зажигаем и гасим синий+зеленый
  analogWrite(10, 15);
  delay(100);
  analogWrite(10, 31);
  delay(100);
  analogWrite(10, 47);
  delay(100);
  analogWrite(10, 63);
  delay(100);
  analogWrite(10, 79);
  delay(100);
  analogWrite(10, 95);
  delay(100);
  analogWrite(10, 111);
  delay(100);
  analogWrite(10, 127);
  delay(100);
  analogWrite(10, 143);
  delay(100);
  analogWrite(10, 159);
  delay(100);
  analogWrite(10, 175);
  delay(100);
  analogWrite(10, 191);
  delay(100);
  analogWrite(10, 207);
  delay(100);
  analogWrite(10, 223);
  delay(100);
  analogWrite(10, 239);
  delay(100);
  analogWrite(10, 255);
  delay(400);
  analogWrite(10, 239);
  delay(100);
  analogWrite(10, 223);
  delay(100);
  analogWrite(10, 207);
  delay(100);
  analogWrite(10, 191);
  delay(100);
  analogWrite(10, 175);
  delay(100);
  analogWrite(10, 159);
  delay(100);
  analogWrite(10, 143);
  delay(100);
  analogWrite(10, 127);
  delay(100);
  analogWrite(10, 111);
  delay(100);
  analogWrite(10, 95);
  delay(100);
  analogWrite(10, 79);
  delay(100);
  analogWrite(10, 63);
  delay(100);
  analogWrite(10, 47);
  delay(100);
  analogWrite(10, 31);
  delay(100);
  analogWrite(10, 15);
  delay(100);
  analogWrite(10, 0);
  delay(400);
}
  for(int i=1;i<5;i++){     //цикл на 4 повторения  
  digitalWrite(10, LOW);    //зажигаем на 1 секунду красный+желтый
  digitalWrite(11, HIGH);
  delay(1000);
  digitalWrite(11, LOW);    //зажигаем на 1 секунду синий+зеленый
  digitalWrite(10, HIGH);
  delay(1000);
  digitalWrite(10, LOW);
}
  for(int i=1;i<21;i++){    //цикл на 20 повторений
  for(int j=1;j<10;j++){    //цикл дает короткую вспышку всеми светодиодами
  digitalWrite(10, LOW);    
  digitalWrite(11, HIGH);
  delay(8);
  digitalWrite(11, LOW);    
  digitalWrite(10, HIGH);
  delay(8);
}
  digitalWrite(10, LOW);    //гасим гирлянду на 0.1с
  delay(100);
}                           //цикл повторяем
  delay(100);
  for(int i=1;i<3;i++){     //цикл на 2 повторения
  digitalWrite(10, LOW);    //плавно зажигаем и гасим красный+желтый
  analogWrite(11, 15);
  delay(100);
  analogWrite(11, 31);
  delay(100);
  analogWrite(11, 47);
  delay(100);
  analogWrite(11, 63);
  delay(100);
  analogWrite(11, 79);
  delay(100);
  analogWrite(11, 95);
  delay(100);
  analogWrite(11, 111);
  delay(100);
  analogWrite(11, 127);
  delay(100);
  analogWrite(11, 143);
  delay(100);
  analogWrite(11, 159);
  delay(100);
  analogWrite(11, 175);
  delay(100);
  analogWrite(11, 191);
  delay(100);
  analogWrite(11, 207);
  delay(100);
  analogWrite(11, 223);
  delay(100);
  analogWrite(11, 239);
  delay(100);
  analogWrite(11, 255);
  delay(400);
  analogWrite(11, 239);
  delay(100);
  analogWrite(11, 223);
  delay(100);
  analogWrite(11, 207);
  delay(100);
  analogWrite(11, 191);
  delay(100);
  analogWrite(11, 175);
  delay(100);
  analogWrite(11, 159);
  delay(100);
  analogWrite(11, 143);
  delay(100);
  analogWrite(11, 127);
  delay(100);
  analogWrite(11, 111);
  delay(100);
  analogWrite(11, 95);
  delay(100);
  analogWrite(11, 79);
  delay(100);
  analogWrite(11, 63);
  delay(100);
  analogWrite(11, 47);
  delay(100);
  analogWrite(11, 31);
  delay(100);
  analogWrite(11, 15);
  delay(100);
  analogWrite(11, 0);
  delay(400);
  digitalWrite(11, LOW);    //плавно зажигаем и гасим синий+зеленый
  analogWrite(10, 15);
  delay(100);
  analogWrite(10, 31);
  delay(100);
  analogWrite(10, 47);
  delay(100);
  analogWrite(10, 63);
  delay(100);
  analogWrite(10, 79);
  delay(100);
  analogWrite(10, 95);
  delay(100);
  analogWrite(10, 111);
  delay(100);
  analogWrite(10, 127);
  delay(100);
  analogWrite(10, 143);
  delay(100);
  analogWrite(10, 159);
  delay(100);
  analogWrite(10, 175);
  delay(100);
  analogWrite(10, 191);
  delay(100);
  analogWrite(10, 207);
  delay(100);
  analogWrite(10, 223);
  delay(100);
  analogWrite(10, 239);
  delay(100);
  analogWrite(10, 255);
  delay(400);
  analogWrite(10, 239);
  delay(100);
  analogWrite(10, 223);
  delay(100);
  analogWrite(10, 207);
  delay(100);
  analogWrite(10, 191);
  delay(100);
  analogWrite(10, 175);
  delay(100);
  analogWrite(10, 159);
  delay(100);
  analogWrite(10, 143);
  delay(100);
  analogWrite(10, 127);
  delay(100);
  analogWrite(10, 111);
  delay(100);
  analogWrite(10, 95);
  delay(100);
  analogWrite(10, 79);
  delay(100);
  analogWrite(10, 63);
  delay(100);
  analogWrite(10, 47);
  delay(100);
  analogWrite(10, 31);
  delay(100);
  analogWrite(10, 15);
  delay(100);
  analogWrite(10, 0);
  delay(400);
}
}

+
avatar
0
  • SerjZzz
  • 23 декабря 2021, 10:56
Спасибо, сегодня буду пробовать :) очень помог
+
avatar
0
  • SerjZzz
  • 24 декабря 2021, 22:39
все работает, очень благодарен, с наступающим и спасибо
+
avatar
0
  • anslan
  • 09 мая 2022, 22:37
На гитхабе сопротивление указано неверно, в микрофарадах

подправте пожплуйста
и на схеме тоже
+
avatar
0
  • artlnz
  • 26 ноября 2022, 09:15
А можно ли сделать обратный вариант, чтобы светодиоды, изначально подключённые с разной полярностью, постоянно горели без переключений и миганий?

День добрый! Наткнулся на ваш обзор в поисках решения своей проблемы и увидел, что с большой вероятностью вы сможете мне помочь))
Имеется гирлянда на микросветодиодах, подключаемая от USB, со сменой режимов и пультом подобного плана. Через пару месяцев гирлянда перестала включаться. Разобрал USB c платой, обнаружил темное пятно на текстолите под микросхемой с маркировкой FM116b. Довольно посредственно разбираюсь в электронике, но из описания сделал вывод, что именно она позволяет управлять режимами свечения. В продаже в своём городе не нашёл, на али продаются партиями от 100 шт.
Пробовал подключать от 5В, горит только половина, при изменении полярности — другая.
Подскажите, пожалуйста, простой способ вернуть эту копеечную гирлянду к жизни) Нужно только постоянное свечение всеми светодиодами.
+
avatar
0
  • igorvb
  • 23 декабря 2022, 19:53
С наступающим всех. В январе убирали елку и у гирлянды оторвали контроллер. Времени сразу припаять не было (или лень) и решил кода будет время припаяю, но время появилось когда надо вешать на елку. Оказалось, что контроллер куда то пропал (жена порядок навела). Спасибо автору за этот проект. Всё отлично работает.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.