ARDUINO Гирлянда на ёлку на основе Гайверовой

Palpalych

★★★★★✩✩
24 Дек 2019
669
347
Приветствую всех. Собирал гирлянду неделей ранее по оригинальной схеме до этого проекта https://alexgyver.ru/christmaslights/. Ее работа мне понравилось!
С прошивкой Алекса появилась возможность управлять кнопкой. Долго думал из чего сделать корпус, и случайно наткнулся на ненужный контроллер светодиодной RGB-ленты с пультом, по случаю купленный за 80₽ три года назад на Али в "Горящих товарах" ))) Сейчас его можно приобрести примерно за 120₽ в обычных магазинах.

Изначально нужна была коробочка, но, как оказалось, пультик вполне рабочий(!!!) да и фотоприемник подошел к этой гирлянде. )))

Для включения пульта в скетче нужно указать (видимо):
#define IR_ON 1 // Если равен 1 используется пульт
----------
#define IR_RC5 1 // пульт RC5,
#define IR_RC6
1 // пульт RC6,

Далее расскажу еще несколько лайфхаков и доработок этой гирлянды
 

Вложения

Последнее редактирование:
  • Лойс +1
Реакции: shtrlz

Palpalych

★★★★★✩✩
24 Дек 2019
669
347
Немного доработал работу управление кнопкой:
- появился режим включения/выключения подсветки "ночное небо" (темно-синий фон, заместо черного) -- 5-кратное нажатие
- появился режим включения/выключения "свечей" (яркое мерцание отдельных светодиодов) -- 6-кратное нажатие

В скетче 1main строки 310-313 меняем (зеленым показано добавляемое):
if (btn.hasClicks()) {
if (btn.getClicks() == 4) glitter = !glitter;

if (btn.getClicks() == 5) background = !background;
if (btn.getClicks() == 6) candle = !candle;

}

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

if (btn.isStep()) {
stepFlag = true;
max_bright += (brightDir ?
16 : -16);
max_bright = constrain(max_bright,
15, 255);
FastLED.setBrightness(max_bright);
}
 
Последнее редактирование:
  • Лойс +1
Реакции: Ded_vonzai и shtrlz

adm503

✩✩✩✩✩✩✩
2 Ноя 2019
35
9
Красноярск
easyeda.com
А можно еще допилить прошивку чтобы количество диодов определялось автоматически при подключении питания с нажатой кнопкой? Разумеется, конец Dout ленты нужно подключить к arduino. Я использую последовательно две ленты 30led\м = 10м 300led и на дальний конец ленты я подаю дополнительно напряжение. Т.е. подключить Dout к arduino легко + полезно по питанию. Такая прошивка стала бы народной т.к. настраивалась бы без компьютера (без пуско-наладочных работ).
 

Palpalych

★★★★★✩✩
24 Дек 2019
669
347
А можно еще допилить прошивку чтобы количество диодов определялось автоматически при подключении питания с нажатой кнопкой? Разумеется, конец Dout ленты нужно подключить к arduino. Я использую последовательно две ленты 30led\м = 10м 300led и на дальний конец ленты я подаю дополнительно напряжение. Т.е. подключить Dout к arduino легко + полезно по питанию. Такая прошивка стала бы народной т.к. настраивалась бы без компьютера (без пуско-наладочных работ).
Изначально думал над этим и предлагал Алексу реализовать принцип еще до того, когда он сделал эту переделку... По сути, нужно установить задатчик на основе DIP-переключателя. а основываясь на уже полученных знаниях предположу, что конфигурацию проще реализовать определяя цепи по 50 светодиодов (китайцы делают цепи такой длины) и максимумом 250... Далее просто в прошивке нужно будет выходить за определение байта к слову адресации.
Для знающих, такой допил будет легко организовать. Я, к сожалению, так далеко в программировании Ардуинки еще не заходил ))
 

adm503

✩✩✩✩✩✩✩
2 Ноя 2019
35
9
Красноярск
easyeda.com
на основе DIP-переключателя
Я по началу тоже думал именно так задавать, но потом посоветовавшись пришел к мысли что не нужно ничего такого городить. Проще считывать количество светодиодов с ленты.
50 светодиодов (китайцы делают цепи такой длины) и максимумом 250...
Если брать ленту 30 led \ м, как у меня, то стандартные отрезки 30\60\90\120\150\180\210\240\270\300 led. Плюс другие гирлянды по 50 led, плюс возможность делать самому любой длинны. Если не считывать с последнего диода, то в пору ставить кнопки +\- и числовой индикатор. К тому же, реально не все могут перемножить 30 led x 5м. Каждый второй тупит в магазине при покупке ленты.
 
  • Лойс +1
Реакции: Ded_vonzai

Palpalych

★★★★★✩✩
24 Дек 2019
669
347
Я по началу тоже думал именно так задавать, но потом посоветовавшись пришел к мысли что не нужно ничего такого городить. Проще считывать количество светодиодов с ленты.

Если брать ленту 30 led \ м, как у меня, то стандартные отрезки 30\60\90\120\150\180\210\240\270\300 led. Плюс другие гирлянды по 50 led, плюс возможность делать самому любой длинны. Если не считывать с последнего диода, то в пору ставить кнопки +\- и числовой индикатор. К тому же, реально не все могут перемножить 30 led x 5м. Каждый второй тупит в магазине при покупке ленты.
когда много кнопок, то уже не народная... ))) со считыванием последнего тоже будут дополнительные сложности

на счет dip:
По идее можно сгруппировать в четыре основные группы конфигурации (2 бита):
1 - 30 кратная 30/60/90/120/180/210/240
2 - 50 кратная 50/100/150/200/250
3 - побитная 32/64/96/128/160/192/224/256
4 - "квадратная" (для матричных эффектов) 16/25/64/100/144/256
- это еще 3 бита, итого 5 полозковый конфигуратор

Как говорил, более 256 диодов - это уже другая программа должна будет заливаться.
 

Palpalych

★★★★★✩✩
24 Дек 2019
669
347
Прикрутил пультик - делюсь как:
Датчик использовал тот, что перешел с коробочки. Пультик прикупил от управления освещением (см. фото), так как штатный потерялся.
IMG_20191229_175636.jpg Вообще, можно использовать старый любой от любой техники!!!
Чтобы посмотреть систему команд, нужно прошить гирлянду скетчем от библиотеки
C:\Users\%USERNAME%\Documents\Arduino\libraries\Arduino-IRremote-master\examples\IRtest2\IRtest2.ino

В этом скетче меняем номер пина куда подключена гирлянда:
int RECV_PIN = 8; (<= переносим из прошивки гирлянды [notamesh4_gyver.ino] #define PIN_IR 8 // Номер пина, куда подключен датчик пульта,)

Компилируем, Прошиваем, Запускаем (не вынимая из дата-кабеля), Включаем "Монитор Порта" Ctrl+Shift+M
Теперь нажимая клавиши на жертвенном пульте в мониторе можем видеть декодированную команду а так же сам тип пульта. В моем случае система кодирования оказалась NEC. Нужно теперь последовательно нажимать на все клавиши и переписать в таблицу значения команд, затем их нужно будет перенести в прошивку гирлянды.

Возвращаемся к скетчу гирлянды. В ней нужно разрешить работу с ДУ (для моего случая настройки будут такими):
#define IR_ON 1 // Если равен 1 используется пульт
--------------------------------
#define IR_RC5 0 // пульт RC5,
#define IR_RC6 0 // пульт RC6,
#define IR_NEC
1 // пульт NEC,
#define IR_SONY 0 // пульт SONY,
#define IR_PANASONIC 0 // пульт PANASONIC,
#define IR_JVC 0 // пульт JVC,
#define IR_SAMSUNG 0 // пульт SAMSUNG,
#define IR_WHYNTER 0 // пульт WHYNTER,
#define IR_AIWA 0 // пульт AIWA_RC_T501,
#define IR_LG 0 // пульт LG,
#define IR_SANYO 0 // пульт SANYO,
#define IR_MITSUBISHI 0 // пульт MITSUBISHI,
#define IR_DENON 0 // пульт DENON
#define IR_REPEAT
1 //Включить повтор, при долгом нажании на кнопку пульта будет повтор клавиши

Далее идем в раздел скетча commands.h и прописываем желаемые команды (частичный пример):
#define IR_Key_Reset 0xFF629D // pp-Select // Сброс всех настроек и перезагрузка
-----------------------------
#define IR_Key_Demo_MyMode
0 // // Включит демо режим (перебор)
#define IR_Key_Demo_MyMode_Random
0xFF6897 // pp-Auto // Включит демо режим (Случайно)
-----------------------------
#define IR_Key_Glitter
0xFF22DD // pp-D // Включить/выключить сверкание
#define IR_Key_BackGround
0xFF02FD // pp-W // Включить/выключить заполнение фона
#define IR_Key_Candle
0xFFC23D // pp-L // Включить/выключить свечки
-----------------------------
#define IR_Key_Previous_mode
0xFFA857 // pp-Left // Предыдущий эффект. Отключает демонстрационный режим
#define IR_Key_Next_mode
0xFF906F // pp-Right // Следующий эффект. Отключает демонстрационный режим
....................

Обязательно прописываем 0, там где процедуры не обрабатываются кнопками.

Сохраняем, Компилируем, Загружаем... и Вуаля - Пультик прикручен! )))
 

Palpalych

★★★★★✩✩
24 Дек 2019
669
347
Очередная доработка для шлейфов ws2612b
Сами шлейфы были прикуплены заранее, еще до окончательной реализации проекта, поэтому столкнулся с проблемой одностороннего рассеивания. Долго думал как реализовать светорассеиватель. Кембрики и кусочки акрила были отметены из-за низкой эффективности. Пробовал примерять пластиковые стразы, но и их пришлось бы дорабатывать, но опять же без действенного результата. Тогда решил поискать в области швейной фурнитуры... Сразу скажу, что у меня был выход на оптовую фирму, где удалось не только выбрать пуговицы нужной формы, но и закупить оные за сущие копейки.
Выбор пал на такой экземпляр:
IMG_20191227_010405.jpg - акриловые блузочные пуговицы диаметром 12мм.
Основное достоинство их в том, что они имеют граненый венец по типу "кристалл", что в итоге оказалось существенным приемуществом!

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

IMG_20191227_010257.jpgIMG_20191227_010559.jpgIMG_20191227_010626.jpgIMG_20191227_010633.jpgIMG_20191227_010714.jpg

Дополнительно залил термоклеем заднюю площадку с наплывами на проводники 2-3мм для укрепления этих проводов и пайки а также для изоляции от короткого замыкания.
 

Вложения

25kostik

✩✩✩✩✩✩✩
31 Июл 2018
9
0
Дня три прожила гирлянда и ... Умерла ардуинка. Возможно сам виноват - не было резистора. Это была единственная Ардуино нано. Есть ещё две платки Ардуино про мини. Подключился аналогично нано, но гирлянда не работает, лишь светит белым цветом. Количество светодиодов соответствует указанному в скетче. Возможно ли без существенных изменений заставить работать гирлянду? Может на другой пин подключить? Дочка переживает - при ней гирлянда сломалась.
 

Wan-Derer

★★★★✩✩✩
Команда форума
31 Июл 2018
1,458
295
Москва
wan-derer.ru
@25kostik, Возможно, сдохла не Ардуино, а первый диод в ленте. Проверить выход Ардуино: подключить на него обычный светодиод с резистором и помигать им.
 

25kostik

✩✩✩✩✩✩✩
31 Июл 2018
9
0
@25kostik, Возможно, сдохла не Ардуино, а первый диод в ленте. Проверить выход Ардуино: подключить на него обычный светодиод с резистором и помигать им.
Все же скорее всего дело в ардуино. Раньше светодиод на ардуино светился, сейчас нет и компом не определяется.
 

Palpalych

★★★★★✩✩
24 Дек 2019
669
347
@Palpalych, Этот проект уже стал полноценным форком, поэтому ветки объединять не будем. Пусть живёт своей жизнью. Дай ссылку на это обсуждение в основной ветке по проекту.
А смысл? Все построено на прошивке от Алекса... Поэтому это один и тот же проект, только доработанный. )))
 

25kostik

✩✩✩✩✩✩✩
31 Июл 2018
9
0
Попробуй перекинуть выход, если сама плата подает признаки жизни
Вечером с работы тестер возьму что бы хоть что то померять. А так, признаков жизни нет. Компом не определяется, светодиод power не светится.
Возможно ли перенести скетч на про мини лёгким путем? А если проц перекинуть с про мини на нано? Определяться как будет? Или и загрузчик надо переписывать?
 

Palpalych

★★★★★✩✩
24 Дек 2019
669
347
Вечером с работы тестер возьму что бы хоть что то померять. А так, признаков жизни нет. Компом не определяется, светодиод power не светится.
Возможно ли перенести скетч на про мини лёгким путем? А если проц перекинуть с про мини на нано? Определяться как будет? Или и загрузчик надо переписывать?
Не знаю, пока опыта мало в Ардуине... сам эту тему прочухал второй неделей.. ))) Варианта 2 - либо сам камень, либо стабилизатор. Второй, в принципе лечится заменой. Если не горелое (не пахнет), то смотри на то, что больше греется. По идее портирование, особенно в смежных девайсах не составляет сложности.