— Ваши игрушки бракованные! — Что, не блестят? — Нет, не радуют!
Наверное каждому уже надоели скучные гирлянды с однотипными эффектами. Хочется что-то по серьезнее, с минимумом вложением и использованием головы (она и так болит от новогодней кутерьмы).
Здесь рассмотрим гирлянду на 100 светодиодов, с 1000 вариациями и ценой за контроллер 150 руб
Интересно? Следуйте далее…
Мои хотелки:
Использовать ленту на WS2811, и чтоб управлялось пультом. На Arduino, как правило, это не выполнимо, слабовато, ресурсов не хватает, лишнего ничего не прикрутишь.
Я уже был готов собрать это на контроллерах ARM. (валяются у меня много платок контроллеров с LPC1754) но паять не охота, и переводить код с Arduino времени нет.
Да я знаю что можно делать на ESP8266, но не хочу… (желающие могут портировать скетч самостоятельно)
И вот мучительно рыская в интернете в поисках интересных эффектов под разные библиотеки, я случайно набрел на страничку FastLED-Demos, где Andrew Tuline выкладывает эффекты для библиотеки FastLED.
Меня заинтересовал раздел notamesh
Я сказал Вау… и понеслось…
Итак.
Для повторения схемы:
Покупается гирлянда на WS2811 или WS2812 или им подобных (куплена наверно уже давно на прошлых распродажах).
Покупается модуль Arduino UNO, NANO или подобным на контроллере ATMega328
Берется модуль ИК (такой или такой )
Пульт от старого телевизора или видеомагнитофона, или плеера.
Блок питания 5 вольт и 3 ампера. Ну любой
У меня были 100 штук WS2812B я каждый светодиод закатал в прозрачную термоусадку, это дало свечение на 360 градусов.
Картинки
В закромах валялась платка на схеме NANO, блок питания, приемник ИК, и корпус от роутера все это соединил воедино.
Картинки
У меня получилось:
вход с ИК пин 8 (PB0, D8, физический пин 12),
выход на гирлянду пин 14 (PC0, A0, физический пин 23)
Вот схема:
Проверяйте распиновку (например, у ИК приемников ножки могут отличаться)
Вы можете выбрать другие ножки Arduino, я покажу, где менять в скетче.
Теперь о скетче
С момента публикации обзора выпущено много версий, для ардуино контроллеров на базе ATMega последняя версия скетча 4,2
Первый вариант скетча с этими библиотеками notamesh1.zip
Оригинальный скетч старался не переделывать (нет времени).
Второй вариант скетчаnotamesh2.zip
Подробности ниже в примечании
Третий вариант скетчаnotamesh3.zip
Подробности ниже в примечании
Четвертый вариант скетчаnotamesh4.zip
Подробности ниже в примечании
Дальше шли модификации 4 варианта скетча, шло добавление отключаемого функционала Вариант скетча 4.1добавлены эффекты notamesh4.1_(plus).zip
Подробности ниже в примечании
Вариант скетча 4.2 Добавлены дополнительные библиотеки управления кнопками и светодиодами индикации notamesh4.2_(Biblio).zip
Подробности ниже в примечании
Урезанная версия скетча для контроллеров на базе ATMega168 Урезано все чтоб влезло в 168 notamesh_(for168).zip
Продолжаем
Скачиваем библиотеки FastLED и IRremote и ставим.
Для установки библиотеки IRremote, по совету автора надо удалить Arduino / libraries / RobotIRremote
Берем пульт, загружаем пример из библиотеки IRremote с названием IRrecvDemo
В 11 строке int RECV_PIN = 11; 11 меняем на 8 (в моей схеме к этому пину подключен ИК приемник)
Загружаем скетч в Arduino.
Тыкаем на кнопки пульта и в режиме монитора порта будут появляться коды, запоминаем их.
Эти коды надо вставить в файлик commands.h,
Например:
для команды IR_A1 (увеличить яркость) у меня на пульте код клавиши 0xff4ab5 #define IR_A1 0xff4ab5 //N/P // Увеличение яркости A1
разберетесь я думаю.
Настройка моего скетча
У автора номера строк будут другими
В 75 строке выставляем пин приемника ИК int RECV_PIN = 8;
В 84 строке выставляем пин выхода на гирлянду #define LED_DT 14
Если у вас другие гирлянды то в строках 84- 87 выбирается ее тип.
И не забываем для 4 проводных гирлянд убрать комментарий в строке 208 и добавить в 209 // LEDS.addLeds<LED_TYPE, LED_DT, LED_CK, COLOR_ORDER >(leds, MAX_LEDS);
LEDS.addLeds<LED_TYPE, LED_DT, COLOR_ORDER >(leds, MAX_LEDS); Если пины не напутали, то должно работать сразу
При первом запуске число светодиодов в гирлянде установлено в 20 шт
Поэтому, для тех кто не использует пульт надо в стоке 119 поставить нужное количество светодиодов, #define INITLEN 20
а если вы уже запустили, то тогда меняем код в строке 225 NUM_LEDS = EEPROM.read(STRANDLEN);
На NUM_LEDS =100;
Где 100 это ваше количество светодиодов.
Для остальных, количество светодиодов можно настраивать с пульта
Я не ограничен в токе блока питания, если у вас блок питания слабее,
то в строке 211 меняем второе число на ваше set_max_power_in_volts_and_milliamps(5, 3000); где 3000 – максимальный ток блока питания в мА, его при необходимости меняем
Вроде все
Как будет время, добавлю эффектов и скетч сюда выложу.
Я записал видео эффекты (режим демонстрации)
И видео когда не меняя эффект, пультом переключал палитры.
Ну как то так….
С Наступающим Новым Годом!!
Примечание по мере поступления:
Контроллер может работать и без пульта, по умолчанию запускается демо режим
Единственно надо установить количество светодиодов в строке 225
строку NUM_LEDS = EEPROM.read(STRANDLEN);
заменить на строку NUM_LEDS =100;
Где 100 это ваше количество светодиодов.
Второй вариант скетча
За неделю появилось много комментариев, большинство просят сделать работу без пульта
Итак встречайте второй вариант https://yadi.sk/d/6A_AqYV419a0hg
Что сделано:
1. Появились настройки
Посмотреть настройки
/////////////////////////////////////////////////////////////////////////////////
/// Настройка
/////////////////////////////////////////////////////////////////////////////////
#define KOL_LED 100 // Сколько светодиодов в гирлянде при первом включении
#define IR_ON 1 // Если равен 1 используется пульт
// если не равен 1 пульт не используется, работает в демо режиме
#define PIN_IR 8 // Номер пина, куда подключен датчик пульта,
#define LED_DT 14 // Номер пина куда подключена гирлянда
#define LED_CK 11 // Номер пина для подключения тактов, используется светодиодов WS2801 или APA102
#define POWER_V 5 // напряжение блока питания в Вольтах
#define POWER_I 5000 // Ток блока питания в милиАмперах
#define GLITER_ON 1 // Включить мерцание при запуске
#define DEMO_MODE 3 // Режим при включении
// 0 - последняя запущенная программа
// 1 - демо режим с последовательным перебором эффектов
// 2 - демо режим с случайным перебором эффектов
#define DEMO_TIME 60 // Время отображение эффекта в демо режиме в секундах
#define DIRECT_TIME 20 // Через сколько секунд менять направление если 0 - не меняем
#define PALETTE_TIME 30 // Через сколько секунд менять палитру если 0 - не меняем
#define LOG_ON 0 // Включить лог 1 - включить лог
Все что считаю важным, вынес в отдельное место. По комментариям разберетесь
2. Добавил три эффекта. (заменил 0 и 1 эффект, и добавил 39) Последний эффект огонь.
По зависанию
Заметил такую вещь, описанную в комментариях, что при нехватке памяти происходит зависание. Подтверждаю.
Что можно сделать:
Уменьшить количество светодиодов при работе с пультом (отвечает переменная MAX_LEDS)
Отключить лог (Отвечает переменная LOG_ON, сделать равным 0)
Третий вариант скетча
Решил оптимизировать память, вроде неплохо получилось,
Максимальное количество светодиодов не ограничено 255, можно делать больше https://yadi.sk/d/QA7cAOHN6V0wzw
Проверяйте, пишите в комментариях
Четвертый вариант скетча
Переработал эффект огня
Добавил свечи
Добавил замена черного цвета фоном
Добавил плавное перетекание одного эффекта другим используя эффект бенгальского огня
как тут на видео
Добавлена обработка долгого нажатия кнопок пульта
Ну и много чего еще https://yadi.sk/d/effzA_UUCVSQAg
Проверяйте, пишите в комментариях.
Что еще надо сделать: это вылизать временные задержки. Но на это надо время.
Четвертый ПЛЮС вариант скетча
По просьбам сделал бегущий огонь, теперь у разработки 122 эффектов, есть возможность добавлять эффекты. https://yadi.sk/d/dL5-cMM_awGAAg
Может кому надо, скетч на базе 2 варианта под нану
Следующая модификация уже будет с заданными координатами светодиодов.
Часто стали спрашивать как настраивать пульт, хочу выделить отдельно этапы настройки
Начнем по порядку 1) проверить удалена библиотека RobotIRremote (смотреть в меню Arduino / libraries / RobotIRremote) если нет, удаляем 2) проверяем работу пульта: загружаем пример из библиотеки IRremote с названием IRrecvDemo и смотрим в мониторе коды клавиш, главное чтобы они повторялись, если выводится не понятное, то проверяйте подключение датчика, если он в железном корпусе то необходимо на корпус посадить минус. У кого то был просто не исправный датчик, или не на ту частоту был рассчитан и отличался от частоты несущей пульта
Как вариант пробуйте пультом от телевизора потыкать для проверки датчика. 3)Теперь надо запомнить коды с пульта, запускаем еще раз IRrecvDemo, нажимаем желаемую кнопку пульта и запоминаем код,
Так делаем со всеми кнопками пульта, которые будут использоваться в программе 4) Заполняем команды в программе, открываем файл commands.h. там будут строчки вида
#define IR_Key_Previous_mode 0xff50af // Down // Предыдущий эффект. Отключает демонстрационный режим
#define IR_Key_Next_mode 0xff28d7 // Up // Следующий эффект. Отключает демонстрационный режим
Меняем числа на свои запомненные.
То есть если ваши желаемые коды пульта для этих команд 0xAA8C2FB8 и 0xBB8C2FB8 то эти строчки будут такими
#define IR_Key_Previous_mode 0xAA8C2FB8 // Down // Предыдущий эффект. Отключает демонстрационный режим
#define IR_Key_Next_mode 0xBB8C2FB8 // Up // Следующий эффект. Отключает демонстрационный режим
по аналогии делаем и с остальными кодами
Не используемые команды в этом файле можно оставить как есть, либо числа заменить нулем 5) Ну и напоследок проверяем настройки программы должно быть так
Тут код программы
//////////////////////////////////////// Параметры пульта
////
//Настройка действия кнопке осуществляется в файле command.h
#define IR_ON 1 // Если равен 1 используется пульт
// если не равен 1 пульт не используется, работает в демо режиме
#define PIN_IR 8 // Номер пина, куда подключен датчик пульта,
#define IR_MAX_LEDS 231 // Максимальное количество светодиодов при работе с пультом должно быть больше
// или равно KOL_LED
// От размера этого числа зависит колличество используемой памяти
//Тип пульта на который будет реагировать устройство, ставим 1 у того который используется
//это уменьшит используемую память
//Чтобы узнать имя пульта запустите в примерах IRremote / IRrecvDump
#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 //Включить повтор, при долгом нажатии на кнопку пульта будет повтор клавиши
Номер пина, куда подключен датчик пульта должен быть правильным как в IRrecvDemo
Также надо поставить правильно 1 в типе пульта, опять же берется из IRrecvDemo
Максимальное количество светодиодов выставляете какое вам надо Все, должно работать
Проблемы с Новой библиотекой Пульта
За два года разработчик IRremote внес изменения в свою библиотеку, теперь она стала не совместима
Как временное решение устанавливаем версии библиотек проверенные FastLED и IRremote
Четвертый вариант скетча с поддержкой библиотек Gyvera
1. Компилируется на ESP32 без ошибок и работает (кроме: TM1637_ON не совместима с ESP32, пульт не проверял)
2. Добавлены следующие устройства
TM1637_ON (индикатор от Гайвера),
До 4 Кнопок (Библиотека Гайвера),
До 2 Светодиодов
3, расширен набор команд, Добавлены команды для работы с кнопками работать стало удобнее.
4. Добавлен режим настройки, где свой набор команд. https://yadi.sk/d/nPBxMYT-LkwtOw
всего 4 версии, плюс усеченная для atmega168 notamesh
notamesh2
notamesh3
notamesh4
Каждая из этий версий это переписывание всей логики работы. также может быть наращена библиотеками управления, (к основному имени добавляется название добавленного функционала) без замены логики работы при этомэти добавки отключаются в скетче для возврата к исходному варианту notamesh4.1_(plus).zip — добавлен бегущий огонь notamesh4.2_(Biblio).zip — Добавлены управление кнопками и светодиоды и возможность компилировать под серию ESP notamesh4.2_(Gyver).zip — тоже самое но под проект гувера (он использовал в своей разработке мой проект в декабре 2019 года и там есть ошибки и мало возможностей) notamesh4.2_(ESP32).zip — это версия 4.2, где убраны библиотеки не совместимые с контроллерами на базе ESP (чисто для ESP32 в этой теме не рассматривается) notamesh4.3_(BLE).zip — это версия 4.2 для ESP плюс добавлено управление по BlueTooth (чисто для ESP32 в этой теме не рассматривается)
все ссылки от меня ведут на актуальную версию, ошибки я исправляю быстро
Новогодние гирлянды на светодиодах ws2811 продают готовыми с контроллерами.Эффекты в них конечно не айс, зато 200 штук.В том году делал на 50 светодиодов, в этом году увеличил до 100. youtu.be/a033JcsHJ8g
Я взял контроллер SP108E, три гирлянды по 50 шт. на WS2811 с зелеными проводами и питанием от 12V, блок питания 12V 3A(самый слабый что был в загашнике). Для управления контроллером скачал приложение, там около 200 готовых программ с возможностью как ручной смены режимов, так и автоматически. Кстати много однотипных, только разные цвета. Так же есть возможность загрузки разных картинок, почему я его и взял. Но с картинки «снимает» просто линию, а саму картинку перемещает бесконечно, если понравился эффект, можно записать в память. Управление идёт по WIFI. Можно задать длину и количество светодиодов в целой гирлянде(1×150, 3×50, 10×15 и т.п.), от этого эффекты могут выглядеть по другому. А можно и отключить часть гирлянды задав например 1×130. На концах гирлянд есть разьёмы для соединения в одну длинннуууююю, отвод пары проводов для доп.питания в случае нехватки. Одна гирлянда длиной около 4 метров, поэтому брал под свою ёлку + запас, цвет проводов есть ещё черный и цветные. 3 Амперный блок на средней яркости тянет без проблем и нет просадки на хвосте гирлянды, для чего и брал с 12V питанием, хотя есть ещё 5 вольтовые. Быстро и без пайки всё подключил, настроил и работает. Мои всё ободрили! Не, одобрили!
Контроллеры есть с управлением по BT(105-й вроде), но вроде там нет загрузки картинок, ещё есть с микрофоном от музыки(110-й). Управлять могут и другими гирляндами и лентами, не одновременно, а если у вас не WS2811, в приложении настраивается. С какими работает надо смотреть описание. Сам видео показать не могу, елку ещё не ставили, а про сами контролеры можно посмотреть в ютубе.
Чуть не забыл. С картинок сканирует только одну линию бесконечно, но можно задать любой угол и направление. Я для картинок использовал самодельные в фотошопе. Задавал цвет фона, потом чертил всякие разноцветные линии, ромбики, овалы, точки и т.п., потом пробовал. Загружал в контролер, включал, если понравилось, то делал запись эффекта в память. При любом режиме можно управлять яркостью и скоростью.
На али. И контроллер и гирлянды брал разом и в одном магазине на распродаже осенью, пришло за три недели. btf-lighting.aliexpress.com/store/1051119
Блок питания брал давно уже для других других разных целей, поэтому специально не покупал.
Кому срочно надо, то есть в России в наличии в некоторых магазинах, но обязательно надо уточнять, могут «надуть». И самое главное ценник сами понимаете что будет выше. У меня так живьём родня брала в Питере дабы не пролететь с гирляндой на этот НГ. Где конкретно не могу сказать, они сами бегали искали.
Это я их «соблазнил», когда они заезжали в гости, а я уже неделю как испытывал свои картинки на гирлянде намотанной на стремянку! :-)
я когда заголовок увидел, думал что это обзор от AlexGyver)) но нет) обзор именно на елочную гирлянду. у Алекса светодиодная матрица с очень крутыми эффектами
Вот правда, сколько людей, столько и мнений. :)
Я о чём… Нет, за конструкцию плюс поставил.
Пожалуйста, прочтите правильно, тут нет критики. Но вот моя личная логика построения автоматизации заключается в том, чтобы свести к минимуму участие человека. Я считаю, что если я автоматизирую что-то, так это именно для того, чтобы человек в этом больше не принимал участие. Я про то, что сколько бы я ни делал «мигалок для ёлок», я пульт (или мобильниое управление) к ним никогда даже в мыслях не рассматривал :)
По мне, так лично мне в новогоднюю ночь есть чем заниматься за праздничным столом и помимо переключения режимов и палитры на ёлке :)
Но это дело, разумеется каждого, не смею навязывать своё мнение.
PS: Что касается меня, то, помимо опубликованных гирлянд в моих обзорах прошлых лет, в этом году повторяю конструкцию Стивена на ардуине-мега. Я писал об этом в одном комменте. Моё мнение не поменялось: его визуализация, для меня, на сегодня, — это эталонная отметка в художественности и эффектности на ёлке, на которую и надо равняться.
Согласен, сам подобное делал. Ведь если есть адресуемная лента, то есть смысл рисовать на елке эффекты, которые завязаны на фактической координате конкретного элемента на елке. Тогда там можно хоть картинки рисовать. Правда первоначальный сетах еще тот геморой — ручками прописать координаты сотен элементов на елке :)
Закажи к следующему, а то опять в декабре вспомнишь, будет поздно)) Я три года собирался снежинку сделать по местным мотивам, в этом году на 11.11 заказал детали, завтра готова будет, надеюсь)))
Вы таки будете смеяться, но прочитал обзор только 17.12, тогда же и заказал гирлянду на 2811 на али.
Вчера она вышла с таможни во Внуково.
Есть шанс что таки дойдет до НГ :)
Большое спасибо за подробное описание Новогодней гирлянды и проделанную работу! Теперь точно соберусь с мыслями, силами, временем и начну её собирать!!!
прикручивать пульт к гирлянде бессмысленно. как представил что все уже пьяные, а я на кнопочки тыкаю, аж плохо стало. да и запомнить на какой кнопке каждая из 25-ти команд, нереально.
я думаю, достаточно пары кнопок для регулировки яркости, причём затолкать это в void loop, чтобы раз отрегулировать при запуске и забыть.
Извините за нубский вопрос, но в чём разница между ws2811, 2812 и 2812b?
Как я понял, 2811 это отдельно RGB светик с платой, а на 2812 контроллер уже на самой пластине с кристаллом? А 2812b?
2811 это обычный светодиод и светит во все стороны, а 2812 — это SMD и светит только в одну сторону?
Кто юзал и те, и те, какой из них долговечнее в плане обрыва проводов?
2811 — это микросхема, к ней можно прицепить нак SMD светодиод или «с ножками»
2812 — тут только SMD, с буковкой b просто ног меньше
ну по поводу долговечности китайских проводов… не тут порвется, дак там протрется.
Я покупал 2812b (как в этой теме) пока ни разу не оторвались
при использовании версии 12 В не забываем ставить резистор.
а 12В и 5В определяется применяемыми микросхемами, есть на 12В есть на 5В
на 12В токи меньше
На 12 Вольт WS2811(2) не рассчитана. У нее по паспорту максимальное 6-7 Вольт. На 12 вольт можно подцепить ее, но только с гасящим резистором по входу микросхемы, а по выходам гасящий резистор рассчитывается исходя из параметров светодиодов. В документации есть типовые схемы включения для 12 и 5 Вольт.
А вот WS2812b на 12 вольт уже цеплять НИЗЯ!!! Причина проста — цепи питания контроллера и светодиода заведены на ОДИН пин. И если вы туда сунете 12 Вольт — хана вашей WSке.
2812 и 2812b отличаются количеством ног и, соответственно, разводкой внутри корпуса. И там и там корпус 5050. Но у 2812 6 ног (по сути это тот же контроллер но совмещен со светиком), а у 2812b только 4 — 2 по питанию и 2 адресных (вход и выход).
Не совсем так. Падение напряжения на синем светодиоде — 3.2 В (на остальных — меньше). То есть при питании от 5 В нам надо погасить на резисторе 1.8 В. Если мы хотим питать диод от 12 В, нам придется гасить на резисторе 8.8 В. То есть потери мощности станут в разы больше. Поэтому, для адресных лент не имеет смысла использовать питание 12 В.
В «традиционной» ленте светодиоды соединяют по 3 и уже потом подключают к цепи 12 В. То есть там надо погасить 12 — 3.2*3 = 2.4 В на три диода. Понятно, что результирующие потери получаются меньше, также меньше становится ток всей ленты, что требует проводов меньшего сечения. Но при этом эти три диода всегда будут гореть вместе. Для таких лент это не проблема, так как там вообще вся лента светится только одним цветом.
Я видел в продаже 12 В ленты с микросхемами (возможно, 2811), но там три рядом стоящие диоды всегда светят одинаковым цветом. Можно использовать их, но будет менее эффектно.
То есть разницы никакой, особенно если не отдельно smd брать, а на круглых платах с 3+3 контактами. Плюс в 2812В меньше потери напряжения, что в случае длинной цепочки важно.
Благодарю.
А как прицепить к проекту двухстрочный дисплей+что нужно будет в код и прошивку? Что-бы название режимов выводил, так ведь проще и знаешь в каком режиме гирлянда работает.
Конечно же можно, автор сделал вывод протокола в режиме диагностики на монитор порта (скорость 57600), в своем скетче я функционал оставил.
Скетч можно сделать под себя, добавить и индикацию, примеры есть.
Места где надо выводить информацию на дисплей в программе начинаются со строк Serial.println(
Моя цель не похвастаться проектом, а побудить людей что-то сделать самим.
Начните хотя бы с типа дисплея, я подскажу.
Это где нибудь в начале допустим после строки #include «commands.h» // The IR commands.
// include the library code:
#include <LiquidCrystal.h>
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
Где const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; это ваши пины, куда подключили дисплей
Далее
Этот код надо вставить внутрь функции void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
Ну и теперь все должно работать
Вывод осуществляется командой
lcd.print("hello, world!");
Где hello, world! это текст, вам надо заменить на свой
… и полсотни микросхем atmega328-mu. Не то, чтобы это всё было нужно в разработке, но раз начал изучать микроконтроллеры, то надо иди в своём увлечении до конца. Единственное, что меня беспокоило — это atmega328-mu. В мире нет никого более отчаявшегося и беспомощного, чем человека, который пытается припаять провода МГТФ к корпусу VQFN. И я знал, что довольно скоро мы до этого дойдем.
Тоже делал гирлянду 100 диодов на зеленых проводах.
Контролер ардуина, всякие управления для него это дичь и излишество, сколько эффектов и палитр не знаю но за 10 минут не повторилось ни разу. Дальше не залипал, елка стоит, светится, дети рады.
Может и мне помогут здешние знатоки… до WS2812 я пока не добрался, но накупил я по здешним скидкам гирлянд по типу таких: mysku.club/blog/discounts/66817.html
есть у меня три цвета rgb и белые, хочу сделать моргалку на ардуине. Моргать научился через мосфет, с этим нормально, но вот как сделать плавное включение и затухание, уже три дня пытаюсь найти… может что другое вместо мосфета купить? или плавное моргание нереально на таком сделать?
подскажите как пульт настроить — если из терминала копирую значение(оно без x0) — то не компилируется, а если дописать x0 то горит просто белым и на пульт не реагирует. Без пульта, работает.
если вы использовали методику получения кодов как написано в теме, то надо добавлять 0x перед кодом либо
в цикле loop меняем строку Serial.println(results.value, HEX);
на Serial.println(results.value);
будет выводится десятичное число
это число надо вставить в настройках вместо 0xfffffff
будет выглядеть так
#define IR_A1 16730805 //N/P // Увеличение яркости A1
Может кто подскажет, как найти на али или в оффлайне провода с прозрачной изоляцией в 3 жилы. На али смог найти только уже припаянные к LED.
Вот такие:
За стоп биты отвечает UCSRC бит USBS тоесть все правильно
и так правильно UCSRC=0b10001110;
Значит, либо ктото переинициализирует еще в программе.
Либо попробуй передернуть UCSRB=0x00;
UCSRB = (1<<TXEN)|(1<<RXEN);
Для страховки можно еще паузу между командами поставить в 1 милисек
Люди, все замечательно. не у каждого есть пульт и заморока с IR.
Поделитесь хорошими скетчами с множеством эффектов для ардуино с WS2812., которые переключаются сами по себе без пульта. типа (бегущие огоньки, по одному, по два, вперед, назад, от средины и т, д.)
Очень нужно для утренников.
СПАСИБО.
paaev@meta.ua
Собрал схему на Arduino Nano один-в-один, пины те же. Скачал и подключил библиотеки. Запустил IRrecvDemo, записал коды кнопок пульта, прописал их в command.h (заменил своими кодами не все строки, т.к. у меня пульт маленький, кнопок немного).
Скетч notamesh1.uno вообще не правлю, все как в скачанном исходнике! Демо режим работает без вопросов, а как только нажимаю кнопку на пульте (любую — хоть прописанную в command.h, хоть нет) — всё, цикл встает. Вывод в ком-порт прекращается, диоды Rx и Tx не мигают, диоды на гирлянде замирают в одном состоянии. Прога зациклилась?
Предположил, что зацикливание идет в цикле
while (!irrecv.isIdle());
в строке 268, но почему?! Закомментировал его, скетч зависать перестал, но работать тоже не хочет. В порт вместо команд сыпется мусор…
Не пойму, в чем причина, что надо исправить? При компиляции IDE ругается:
In file included from C:\Users\Alex\Documents\Arduino\scetches\notamesh1\notamesh1.ino:63:0:
C:\Users\Alex\Documents\Arduino\libraries\FastLED-master/FastLED.h:14:21: note: #pragma message: FastLED version 3.002.001
# pragma message "FastLED version 3.002.001"
^
Скетч использует 23760 байт (77%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1929 байт (94%) динамической памяти, оставляя 119 байт для локальных переменных. Максимум: 2048 байт.
Недостаточно памяти, программа может работать нестабильно.
Это может быть причиной? Заранее благодарен за помощь!
Такая же ситуация, сперва у меня с пропиской команд не получалось, автор помог. Потом тоже гирлянда начала зависать при нажатии кнопки на пульте. Уже на знаю, что не так
Кстати, ругается ли IDE или просто информирует, не знаю, у меня с таким текстом часы работают, да и в других проектах вроде проблем не было.
Проблема всё же была в нехватке памяти, как и предупреждала IDE… Решение было очевидным — в строке 88 поставил
#define MAX_LEDS 50
Скетч заработал как надо! Теперь думаю, и зачем тут пульт? ))
Теперь надо дорабатывать скетч, чтобы с пульта сделать перебор только нужных эффектов. А то, некоторые слишком уж навязчивые ;)
dmitrybik Вторая версия скетча
Жена- «Божественно», я и сам пол ночи радуюсь как дитя.
Подскажите пожалуйста:
— как выбрать нужные эффекты,
— как уменьшить скорость эффектов,
— и хочется побольше эффектов на темном фоне.
А в остальном все очень и очень (КРАСОТИЩА).
Автору от всех, большой Respect.
Завтра несу в школу, будем готовится к Новому Году.
Все управляется с пульта
Эффекты перебираются командами IR_D2 — предыдущий и IR_D3 — следующий
или без пульта то переменная INITMODE
Скорость выбирается командами IR_C2 -замедление и IR_C3 -ускорение
К сожалению при смене эффекта скорость теряется
Но есть лазейка в функции void strobe_mode(uint8_t newMode, bool mc)
Есть case номер после него указывает номер эффекта, а в этой строке переменная thisdelay отвечает за скорость этого эффекта, это так называемая задержка, чем число меньше, тем эффект быстрее и наоборот, чем выше число, тем эффект медленне.
Поздравьте с Новым Годом школьников как следует!!!
Огромное спасибо за вторую версию. У меня готовая гирлянда на 120 светодиодов (самопальная), можно ли задействовать все 120? Что можно закоментить в скетче? Пульт не буду использовать (и вайфай тоже)!
Гирлянда должна быть с адресуемыми светодиодами, это главное условие
Для настройки меняем:
#define KOL_LED 120 // Сколько светодиодов в гирлянде при первом включении
#define IR_ON 0 // Если равен 1 используется пульт
здесь выставляем пины правильно, если собрана как на рисунке в теме то менять не надо
#define LED_DT 14 // Номер пина куда подключена гирлянда
#define LED_CK 11 // Номер пина для подключения тактов, используется светодиодов WS2801 или APA102
и здесь не забываем выбрать правильный тип светодиодов
Надо закоментировать не используемый и раскоментировать нужный
#define DEMO_MODE 3 // Режим при включении
// 0 — последняя запущенная программа
// 1 — демо режим с последовательным перебором эффектов
// 2 — демо режим с случайнвым перебором эффектов
По умолчанию стоит 3 режим, а в описании его нет. Что такое 3 режим?
Прошил Ваш скетч, настроил количество и тип светодиодов, при использовании пульта в лог пишет SETTING UP по кругу и не запускается, а если пульт выключить то всё работает. В чём может быть проблема?
Тогда надо уменьшить максимальное количество светодиодов, во второй версии скетча строка 123 #define MAX_LEDS 200 // Maximum number of LED's defined (at compile time).
надо поставить число 150 #define MAX_LEDS 150 // Maximum number of LED's defined (at compile time).
по идее должно работать
Кстати, подскажите сколько ресурсов пишет после компиляции
У меня стоит #define MAX_LEDS 100
Лог компиляции показывает:
DATA: [===== ] 52.4% (used 1073 bytes from 2048 bytes)
PROGRAM: [======== ] 76.1% (used 23380 bytes from 30720 bytes)
Это при выключенном логировании и при вкл:
DATA: [======= ] 72.9% (used 1492 bytes from 2048 bytes)
PROGRAM: [======== ] 80.0% (used 24582 bytes from 30720 bytes)
Лог пишет в цикле:
---SETTING UP---
Initial del␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀
Ну что сказать, У вас зависает в фунции Setup, потом идет как я понял перезагрузка, или зависание
Слова ---SETUP COMPLETE--- не выводятся
Судя по логу компиляции должно все работать.
Причины могут как аппаратные так и программные.
Аппаратные
1 проверяйте питание,
2 проверяйте замыкания на плате (продуйте, может токопроводящий волосок висит),
3 с usb может идти сброс, там ножка на ресет заведена
Программные
1.Обновите библиотеки
2 обновите среду Ардуино
Может и модуль Nano может быть бракованым, как вариант проблема с ЕЕПРОМ, можно его убрать.
скетч скачало более 200 человек, вашу проблему я не встречал.
Наконец получилось с новым скетчем! Спасибо большое dmitrybik.
А нельзя никак сделать, чтоб был доступен с пульта 39 режим? Может, даже пожертвовав какими-то эффектами похожими что ли, чтоб памяти хватало?
Мне, не к спеху, если Вам не трудно будет до НГ, то хорошо)
И еще вопрос, пока играл с эффектами и палитрами, то не понял, можно ли как-то остановить изменение цвета, чтоб, например, светилась вся гирлянда одним цветом и только мерцание сопроваждало бы этот режим. Хотел получить примерно такой эффект youtu.be/3Io4OeBP2GQ?t=183, но пока только переливается все. Подумал, что Остановка вращения палитры F1 Остановить перебор Палитр это делает, но вроде все равно переливаются разными цветами.
Внимание, кто скачивал 2 вариант скетча, до сегодняшнего момента, перечитайте заново. Там была ошибка в выборе режима при запуске, раньше выбирался только демо режим с последовательным перебором, теперь ошибка исправлена.
dmitrybik, большое спасибо! Человек слова — обещал — сделал. Тестирую сейчас. А как бы увеличить количество диодов до 300? А то в ленте 300 диодов, резать не хочется, а максимум только 250 получается. Что можно подправить в скетче?
Я вас понял. В третей версии сделаю, но… приходится ужиматся в ресурсах. Это добавит размер используемой памяти.
Придется жертвовать частью эфектов, но я постараюсь…
Ориентировочно выйдет через неделю или раньше.
Доброго времени суток, извините, я так понял этот комментарий от прошлого года.
Не подскажете, хотел детям на улице елку оформить, она высокая, насчитал где — то под 370-400 светодиодов, такое уже тестировал кто — то с данным сетапом.
Почитав разные темы понял, что похоже у нано памяти не хватит на такое количество, на сколько реально можно ориентироваться, исходя из элементов с топика?
Ну и писалось про вариант с координатами, там еще будет больше данных, значит что — то будет совершенствоваться, на эту зиму есть смысл расчитывать? :)
С Уважением Дмитрий
Если нано, то максимум это 300 светодиодов с отключенным пультом
Мега тянет более 500
На работе STM32 тянет более 2500 светодиодов
мой совет такой, если у вас нано. разбейте на 2 части и каждую часть подключите в паралель. То есть 1 светодиод и
например 201 подключите к контроллеру остальные цепочкой
Добрый, получилось сделать 2 на квартирные ёлки, скоро уже буду доставать и проверять работоспособность.
Пересчитал конус, оказывается 600+ светодиодов будет, не подскажете на stm32 что и как делали?
Или в ближайшее время можно ожидать новую версию?
С уважением
Если и будет под STM32 то коммерческая версия (для тех кому лень собирать самому) там легко 4000 светодиодов (в моем экземпляре нет больше памяти). Поймите меня правильно, FastLED нет адекватной с аппаратным передатчиком для разгрузки микроконтроллера, пришлось писать свою FastLED_SPI_STM32.
Не коммерческая будет уже точно на ESP32. Разработчик FastLED ввел в нее аппаратную поддержку передатчика. Я только-только приступил к изучению и писанию кода под ESP32, могут вылезти подводные камни.
В некоммерческом виде будет весь текущий функционал, плюс расчет конуса, на ESP32 пульт заменит беспроводный интерфейс, код будет в среде ардуино, сроки пока не знаю, делаю в свободное время.
Если хотите успеть до Нового года ставьте на Меге, она по крайней мере отработана, STM32 там сложно, писалось все не на ардуино (в ней нет пошаговой отладки)
Библиотеки установлены
Ардуино Nano. 28 светодиодов без пульта работает все отлично. Как только
подключаю пульт (#define IR_ON 1)
ошибка в while (!irrecv.isIdle());
Ir коды в COMMANDS_H ввел
#define MAX_LEDS 50 // Maximum number of LED's defined (at compile time).
Помогите.
Эта команда, ждать, если идет прием с пульта. Такое впечатление, что у вас непрерывно чтото принимается.
Либо датчик приема с пульта сломан,
Либо наводки идут, для этого датчик закрывают в металический корпус и корпус подключают к общему проводу (в данном случае к минус питания)
Бывали случаи срабатывания, когда рядом с домом чтото светило (реально окна выходили на металлургический комбинат, а там зарево от выливания шлака на улицу) Решается задергиванием штор.
Совет:
Для начала закройте вход датчика ИК (если не заработает, то меняйте датчик, если заработает, то ищите кто излучает)
Проект это развитие разработки другого человка, он решил использовать такие, у него есть и описание.
Главная фишка: здесь эфекты наслоены друг на друга и занимают минимум ресурсов.
Чувствую надо видео новое снимать, во 2 версии все намного интереснее стало.
Третий вариант скетча
Решил оптимизировать память, вроде неплохо получилось
Максимальное количество светодиодов не ограничено 255, можно делать больше https://yadi.sk/d/QA7cAOHN6V0wzw
Проверяйте (вечером сам проверю), пишите в комментариях
Ну раз ресурсов много стало, в четвертом варианте будут переработаны и добавлены эффекты
Третий вариант скетча
Намного лучше. Все грузится.
На сигналы пульта реагирует быстрее.
Спасибо.
На всех пультах есть кнопки с цыфрами.
Как бы закрепить эффект за кнопочкой?
И с яркостью, мне кажется лучше было бы одним нажатим увеличить яркость, а не щелкать по кнопке…
Или это я уже слишком…
кнопка 1-1ый эффект
кнопка 2-2ой эффект.
…
кнопки 34-34ый эффект
#define IR_A1 0xB78877 //N/P // Увеличить максимальную яркость
(было бы лучше чтобы просто при нажатии кнопки яркость плвно увеличивалась) а не тыкать
и соответственно при нажатии
#define IR_A2 0xB722DD //Repeat // Уменьшить максимальную яркость
Круто) Прошил 3-ю версию, отклик на пульт стал быстрее. Хотелось бы еще отдельным эффектом — мерцающих огоньков свечек, или, как еще называют, эффект пламени, чтоб выбрал эффект, а там только свечки своим оранжевым пламенем,
Загрузил сразу на 300 диодов. Загрузилась, хотя и показала нехватку памяти. Проработала один цикл и зависла. Буду искать причину. Автору большое спасибо что не оставляет проект.
Я проверить, к сожалению не могу, нет у меня такой платы сейчас
попробуй закоментировать:
237 строку #include «fire.h»
и 443 строку case 39: if(mc) {thisdelay=10; palchg=0; thisdir=1;gCurrentPalette = CRGBPalette16( CRGB::Black, CRGB::Blue, CRGB::Aqua, CRGB::White);} fire(); break;
и в 179 строке поменять 39 на 38 uint8_t maxMode = 38;
Если зависать не будет, то виноваты ресурсы
И ждем новый скетч, там раширенная клавиатура и эфект пламени не требовательный к памяти
я почти его закончил
Пульт штука, конечно, крутая, но для новогодней гирлянды, имхо, излишняя.
За год может потеряться, батарейки нужны, произвольным пультом не заменишь (нужно перешивать)
Использовать пульт от телика — нужно прикрывать телик, чтобы на него не прошли команды которые хотел послать гирлянде.
У меня самсунг — на пульте задействованы все кнопки и высокая чувствительность — ловит из соседней комнаты на отраженке от стен.
Напрашиваются 3 механических кнопки (дополнительно, а не вместо пульта)
1 — старт/стоп демо режима (заморозка текущего эффекта)
2 — выбор следующего режима. Можно даже 2 кнопки (следующего / предыдущего), ибо пролистать 39 режимов по кругу достаточно утомительно.
3 — выбор яркости. 3-5 ступеней. Иначе в полной темноте может слепить / раздражать, а при включенном свете — плохо видно.
Кнопки можно не запаивать, но хорошо если бы это было реализовано в скетче.
Памяти это не много отъест, входов свободных достаточно, можно резисторным делителем через аналоговый вход.
Я так понял что код должен начинаться с 0х? если я свой код меняю на этот BD5DAC9D выдает ошибку, а если 0хBD5DAC9D то ошибки нет, но и не работает )
Спасибо.
Спасибо, не увидел в коментах.
Еще вопросик. Когда нужно узнать имя пульта (IRrecvDump), то пульт который хочу прикрутить он определяется как Unknown encoding. А такого варианта нет. Нужно искать другой пульт? Спс.
Поставили в тупик. Думаю надо поступать так проверить в IRrecvDемо, пульт выдает код или нет (то есть он одинаковый при каждом нажатии кнопки пульта и у каждой кнопки пульта он различный)
если все нормально, то в настройках моего скетча можно выставить любой пульт, например NEC
Теоретически должно работать
Походу дело в том, что с каждым нажатием одной кнопки приходит разный код (.
и надо нажать очень много раз чтобы код который внес в файл проскочил и функция заработала, ну и бывает, что и на каждое нажатие приходит верный код.
Походу проще физические кнопки сделать…
Поэтому мои рекомендации:
1. Проверьте может шумит приемник ИК (если он в металлическом корпусе то корпус надо подключить к минусу.
2, Может частота пульта не соответствует частоте приемника ИК (бывает 38 и 36 кГц) Попробуй те их подобрать.
3. Поменять пульт тоже можно
Да вы можете перейти на аппаратные кнопки, либо использовать демо режим.
Я постараюсь добавить аппаратные кнопки.
ПС: из 200 человек скачавших скетч только у двоих есть проблема с пультом.
Конечно же можно и даже больше. Нет ограничения на 8 каналов (можно больше и меньше), нет ограничения на цвет лампочки (16 мил оттенков) у любого элемента гирлянды, не надо паять схему, покупаются модулями, не надо программировать пзу (не нужен программатор). Единственно что надо, модуль ARDUINO, гирлянда ws2812, блок питания и компьютер.
Подтверждаю, получилось сделать за час с перекурами, эффекты просто потрясающие, правда все было в наличии, лента с адресуемыми светодиодами 2813 и ардуина мега.
так я по этому обзору делал. 2812 0т 2813 по подключению не отличаются.
по поводу вашего сообщения выше с интересными эффектами, такое тоже можно сделать на ардуинке.
Исправлены ошибки в 4 скетче:
1. Ошибка компиляции для 2 проводных светодиодов
2. Проблема с ЕЕПРОМ Веедены дополнительные проверки
Остальное не затронуто. Скетч 4 обновлен, можно скачать
Не грузится скетч если #define CHANGE_ON 0 // Включить смену эффектов через бенгальский огонь
ошибка
а если
#define CHANGE_ON 1 // Включить смену эффектов через бенгальский огонь
то работает но надоедает
Исправлены ошибки в 4 скетче:
1. Исправил ошибку при отключении бенгальскго огня
2. Смену плавную смену режимов можно оставить, а эффект бенгальского огня убрать
Остальное не затронуто. Скетч 4 обновлен, можно скачать
Доброго дня) Все круто, перепрошился. Спасибо большое автору за проект и его поддержку. Правда, я так и не понял как выставить свечки, кроме каждого 10 светодиода. Я тогда имел ввиду эффект пламени типа такого youtu.be/-2hk6rxlrGA?t=7 чтобы все светодиоды мерцали как свечки и там можно было включать или отключать только блеск, а палитра не менялась бы, только скорость и яркость с блеском ) Просто перебором эффектов вроде такого нет. Реально ли включить в скетч такой режим?
Что-то я делаю не так, илди… Подключаю WS2811 200 светодиодов, в скетче выставляю: KOL_LED 200 и IR_MAX_LEDS 250, но работают только 100. При этом я отключил первые 50 и подключил следующие 100, то есть, вся линия данных и питание в норме. На цветомузыке все 200 тоже работают, а тут почему-то только 100.
У меня была похожая проблема, работало только 30 светодиодов, я пробовал скетчи примеров из библиотеки FastLED-master, работали все. Провозился пол дня, потом заработало. В чем проблема была я так и не понял, переустановил библиотеку, залил скетч 3 из архива, поменял в нем только Номер пина куда подключена гирлянда и все, залил, работает. После стало работать нормально, поменял все под себя, работает отлично.
А сколько у Вас светодиодов в гирлянде? На другом скетче или другом контроллере у меня гирлянда вся горит, а вот на этом скетче только 100 светодиодов.
сейчас 150 работают WS2813, в установках стоят WS2812.
Проблема была аналогичная вашей только с 30 диодами, работали только 30, в другом скетче с примеров библиотеки FastLED-master загорались с точностью до штуки, все 150. Провозился пол дня потом заработало. Такой вопрос, а меньше 100 светодиодов нормально устанавливается?
Вот щас перепрошил на 90 светодиодов и все равно работают 100… реакция на команды пульта есть.
Я выявил это только когда повесил на елку всю гирлянду, до этого проверял все время скетчи на 100 светодиодах…
вот проблема 1:1 как у меня, тоже работало всегда 30 диодов. Я переустановил библиотеку FastLED-master поставил ее из архива, может в этом решение проблемы. Скачал заново скетч и ставил его с минимум изменений.
ситуация 100 % как у меня, я тоже проверял все на 30 диодах, и проблему выявил перед установкой гирлянды на елку, как не тасовал ленты, работает всегда 30 шт. Ставишь 100 работает 30, ставишь 10 работает 30. Я не знаю, но где то это прописалось.
Попробуй еще примеры по запускать из библиотеки FastLED, я с ними пробовал, проверял в них работу всей гирлянды.
Ситуация такая:
Были проблемы пока не обновил библиотеку FastLED:
Скетч/Подключить библиотеку/Управление библиотеками, там выбрать тип Обновляемый и если в списке стоит FastLED обновить его нажав кнопку обновление.
Теперь по поводу сколько светодиодов работает.
Если включен пульт (IR_ON равен 1 ) то количество светодиодов берутся не из KOL_LED а из EEPROM
поменять можно будет командой с пульта IR_B2 и IR_B3 для 3 скетча или IR_Key_Length_Garland_plus и IR_Key_Length_Garland_minus для 4 скетча
Ситуация такая:
Были проблемы пока не обновил библиотеку FastLED:
Скетч/Подключить библиотеку/Управление библиотеками, там выбрать тип Обновляемый и если в списке стоит FastLED обновить его нажав кнопку обновление.
Теперь по поводу сколько светодиодов работает.
Если включен пульт (IR_ON равен 1 ) то количество светодиодов берутся не из KOL_LED а из EEPROM
поменять можно будет командой с пульта IR_B2 и IR_B3 для 3 скетча или IR_Key_Length_Garland_plus и IR_Key_Length_Garland_minus для 4 скетча
Это не баг это Фича. Я у себя код проверил, не нашел почему. Значит это особенность такая.
Сказали бы конкретно на каком эффекте, я бы программно фофиксил.
После обновления библиотеки FastLED все само устранилось.
Замечательные эффекты. и работа устройства.
Казалось бы больше нечего и не нужно, но кнопочки и резисторы потихоньку ищем…
Спасибо большое автору за проект и его поддержку.
Подскажите как понять эту строчку
#define COLOR_ORDER RGB //Очередность цвета светодиодов RGB или GRB
На что она влияет, на какие светодиоды рассчитана?
у меня WS2811
У изготовителя светодиодов есть такая особенность, цвета могут быть поменяны местами. Изготовитель библиотеки FastLED учел это, и ввел этот параметр для подстройки
Можно проверить, либо загрузив пример FastLED Blink (там должен мигать красный), либо в моем скетче с пульта включить красный ( команда IR_Key_Solid_Red)
Если это не так, то поменять параметр
Добавление в 4 скетче:
1. Добавлен эффект 40 Свечки (но не так как на видео, похоже, того скетча что на видео не нашел, поделитесь добавлю)
2. Добавлены эффекты плавной смены и плюс режим случайного перебора
3. Добавлена аналоговая клавиатура
4. Добавлены выбор режима как в телевизоре два варианта (кнопки 0-9 и +10 или кнопки 0-9)
5. Изменен режим свеча, можно выбрать шаг отображения.
6. выполнена оптимизация
7. исправлены мелкие ошибки и добавлены новые :) Скетч 4 обновлен, можно скачать
Большое спасибо) Такой эффект тоже сойдет, с блеском нормально) Разве что можно добавить еще слегка мерцания)
Собрал на Pro Mini и установил в корпус, где уже была цветомузыка с вариантом от ЧипДип (точно не знаю чья разработка Люмазойд) и часами на esp с синхронизацией по NTP. Попоробовал даже цветомузыку на елке, но там билиберда, когда лента под шторами сверху на карнизе, то лучше смотрится.
А сама гирлянда зачетная получилась, столько эффектов. Еще и поддержка и модернизация автором. Может, она щас дапже самая крутая, как мне кажется, из тех, что встречал.
Большое года ждал паблик релиз на ардуино, правда выложено без исходников.
Но зато куча настроек через дисплей, собрал себе на 300 диодов, питание через каждые 100, родные были в восторге!
Собирал ее летом или осенью навесом на ардуино мега попробовать, но потом как-то позабыл, да и на дисплее все на англ, надо было разбираться что к чему…
Было время на тм2 и ла3 делали програмируемые бегущие огни на светоодиодах.
Так там можно было задавать нажатием одной кнопки колличество бегущих светодиодов.
1 нажатие — 1 светодиод
2 нажатия — 2 светодиода
— ну скажем хотябы до 5.
Было бы класно реализовать и в Вашем проекте, если это возможно, лучше всего с пульта.
Спасибо.
Это можно сделать, но люди не поймут. Это как на современном компьютере запустить игру 80 годов, в 16 цветах и звуком из спикера, удовольствие получат только те, кто в этих 80 играл. а остальные покрутят пальцем у виска.
Раньше сам делал схемы и на триггерах и сдвиговых регистрах но теперь возможности куда шире. Я в те времена не пог предположить, что заставлю лампочку зажжется любым из 16 миллионов цветов, Теперь применимы термины волны, синусоиды, палитры.
Давайте так, если народ поддержит, то я добавлю эффекты из 80-90 годов.
Гирлянда становится всё лучше и круче! Спасибо автору!
Относительно 96 строчки скетча
#define POWER_I 5000 // Ток блока питания в милиАмперах
У меня зарядка для мобильного 2-х амперная не тянула. Зависала на первом эффекте. Выставил 2000, всё-равно висла. Поставил 1000 и всё прекрасно заработало.
Виснет. С предыдущим скетчем при значении 2000 не висла. А вообще эта моя сборка (нано + лента 300 диодов + зарядник 2А Самсунг) с другими скетчами работает, не виснет.
Два раза пытался перейти на 4 версию и вернулся обратно на третью. Четвертая зависает и режимы очень похожи друг на друга. Все это на 100 ws2811 без пульта и кнопок в деморежиме 2.
Оболочка arduino последняя и все библиотеки скачаны по вашим ссылкам свежие. Вот сейчас опять зависла похоже на этапе смены режима. Половина гирлянды красная, половина синяя с каждым десятым белым огоньком.
# pragma message «FastLED version 3.002.001»
Скетч использует 18340 байт (56%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 937 байт (45%) динамической памяти, оставляя 1111 байт для локальных переменных. Максимум: 2048 байт.
CHANGE_ON 1
CHANGE_SPARK 4
Вот лог:
---SETTING UP---
Initial delay: 0ms delay.
Initial strand length: 100 LEDs
Mode: 0
1005
---SETUP COMPLETE---
Start SetMode
Mode: 36
60656
End SetMode
Start SetMode
Mode: 30
120595
End SetMode
Start SetMode
Mode: 12
180657
End SetMode
Start SetMode
Mode: 19
240650
End SetMode
Start SetMode
Mode: 38
256613
End SetMode
Start SetMode
Mode: 39
316594
End SetMode
Start SetMode
У меня WS2811 200 светодиодов. Отключен Log, использую пульт. Сегодня с обеда работает норм, правда, оставил на одном переливающимся эффекте, блок питания от компа.
Еще раз спасибо за проект. В таким виде как сейчас демо режим с интервалом 60 сек будет запускаться только до 4 режима. Нужно как минимум изменить тип переменной secondHand на uint16_t. у себя я изменил обработку DEMO
void demo_check(){
if(demorun) { // Is the demo flag set? If so, let's cycle through them.
if (millis() — lastSecond > DEMO_TIME * 1000) {
lastSecond = millis();
gCurrentPaletteNumber = random8(0,gGradientPaletteCount);
gTargetPalette = gGradientPalettes[gCurrentPaletteNumber];
#if CHANGE_ON == 1
if(demorun == 2) {
newMode = random8(0,maxMode);
}else{
newMode++;
if (newMode > maxMode) newMode = 0;
}
StepMode = 1;
#if LOG_ON == 1
Serial.println(F(«Start SetMode»));
#endif
#else
if(demorun == 2) {
ledMode = random8(0,maxMode);
}else{
ledMode++;
if (ledMode > maxMode) ledMode = 0;
}
strobe_mode(ledMode,1); // Does NOT reset to 0.
#if CANDLE_KOL >0
PolCandle = random8(CANDLE_KOL);
#endif
#endif
} // if lastSecond
} // if demorun
} // demo_check()
И long lastSecond; объявл в глобальный переменных.
И еще, не разобрался почему при mode 7 происходит стабильный перезапуск процессора.
Добавление в 4 скетче:
1. Переписан демо режим по нормальному, зависаний быть не должно
2. Добавлено: можно создавать списки режимов для работы в демо режиме, Появились демо 3 и демо 4 для работы с этими списками Скетч 4 обновлен, можно скачать
А вас проблемы не было с программой juggle_pal() ( 7 и 31 режим). После их выбора либо в ручную либо в демо режиме происходит перезагрузка. В 3-й версии они работают нормально.
обавление в 4 скетче:
1. Исправлена ошибка. при CHANGE_SPARK 4 эффекты случайно не менялись. Исправлено
2. Списки режимов теперь не расходуют оперативную память, можно список делать до 255 элементов. Скетч 4 обновлен, можно скачать
Автор, помогитеееее!!! )) Ситуация такая, решил после двух лет обновить гирлянду, собранную по вашей проекту, прошил мегу, добавил ещё 100 диодов (итого 200 шт). Прошил прошивку 4 + и обнаружил что 40 эффект свечи поломался (( красивый оранжевый цвет стал грязно-желто-зелёным ((, какая прошивка на старой ардуине осталась не помню ( и пультом количество led больше 100 не добавляется ).
Это нормально,
если у вас стоит COLOR_ORDER RGB поменяйте на COLOR_ORDER GRB
или наоборот
если у вас стоит COLOR_ORDER GRB поменяйте на COLOR_ORDER RGB
Если не используете кнопки Гайвера (появились недавно) то проверьте параметр SAVE_EEPROM он должен быть
либо SAVE_EEPROM 2 либо SAVE_EEPROM 0 чтобы COLOR_ORDER заработал
спасибо, но COLOR_ORDER правильный (( прямой выбор цветов совпадает. Не добавляются диоды на старой плате (она мне и не нужна). На новой с этим всё нормально
Красный выводится правильно, вообщем похоже разобрался, не знаю как это связано, но отключил опцию «свечи по методу… чегото -там» и свечи стали нормального оранжевого цвета, правда новые диоды слегка розовят, но это уже не так существенно. Спасибо большое за оперативную помощь! С Наступающим!
Получил гирлянду на 50 2811 подаю питание 5 вольт / 2 ампера — она вся светится белым.
Я так понимаю, она должна светиться только при подаче управления?
Китаец прислал гирлянду с пробитыми чипами?
Тут заявлена 2811 5 вольт
Отзывы нормальные.
По идее ws2812b — это та же 2811 без корпуса, интегрированнвя прямо в сборку с диодами? Хотя пишут что тайминги отличаются немного.
Может я управление не с той стороны подаю?
Нигде не описано.
Есть 2 разъема, один мама, там еще 2 провода питания, другой — папа, для следующей гирлянды.
Так и подключаю.
Гирлянда без контроллера загорается белым (условно белым, светятся все кристаллы, цвет чуть розоватый), подаю управление — изменений нет.
Попробовал несколько библиотек — FastLed, Adafruit Neopixel
Компилировал их примеры
Похоже придется осциллограф доставать
Поскольку кнопки паять и пульт настраивать некогда, запустил в демо 2.
Похоже нашел ошибку — некоторые эффекты считают что диодов не 50, как указано в 2-х местах в настройках, а 49
Последний диод может зависнуть на выходе из эффекта. Например бегут сине-зеленые волны, а он ярко-розовый с предыдущего эффекта.
Потом опять нормально, потом опять не хватает шага.
Поставить в настройках 51 диод?
Или это последний чип зависает (провода очень тонкие)? Хотя, тогда бы не развисал при смене эффектов.
Еще багрепорт — 4 версия с демо 2 режимом виснет примерно через час. Ушел собаку гулять, вернулся — елка черная. Перезапустил, опять повисло. Очень и очень не сразу.
Отладку не включал — шил со стационарного компа, а он в другой комнате
Старенький ноут не потянул новую IDE :(
Другие опции (отключение плавных переходов и прочие) не проверял по той же причине.
Питания с запасом — delta electronics 5v/2.5a на 50 диодов, в скетче выставлено 2000 ма.
Но когда работает — смотрится шикарно!
У меня как-то странно себя ведет — застопорилась (погасла), лень было идти передергивать. Она еще минут 30 постояла, потом включила какой-то хаотичный эффект, потом опять умерла. Минут через пять опять тот же эффект и после него час не просыпалась. Надоело ждать, перезапустил по дороге к холодильнику :)
Добавление в 4 скетче:
1. Исправлена ошибка KOL_LED=IR_MAX_LEDS (зависание)
2. Исправлена ошибка в эффектах 2 5 9 12 14 18 26 ( последний светодиод теперь работает)
3. Исправлена ошибка перехода с 39 на 40 эффект (не всегда была)
4. исправлено еще чтото по мелочам
5. сделал список переливающихся эффектов (которые у меня оставлены по умолчанию) Скетч 4 обновлен, можно скачать
С Новым годом! Спасибо большое автору за поддержку проекта. Пока испытать не могу, т.к. за сутки до праздника почему-то сдохла ардуинка. Позже протестирую как до новой доберусь.
У вас наверное много светодиодов, при работе не хватает памяти
Глобальные переменные должны оставлят больше 500 байт иначе могут быть зависания. чтобы уменьшить память можно поотключать не используемое. У вас отключение лога, как раз освободилонужную память
Скинте ваши настройки, с настроками по умолчанию (100 светодиодов) всю новогоднюю ночь до утра работало без нарекания, может у вас какойто режим был включен?
#define KOL_LED 49 // Сколько светодиодов в гирлянде при первом включении
//////////////////////////////////////// Параметры пульта////
//Настройка действия кнопке осуществляется в файле command.h
#define IR_ON 1 // Если равен 1 используется пульт
// если не равен 1 пульт не используется, работает в демо режиме
#define PIN_IR 8 // Номер пина, куда подключен датчик пульта,
#define IR_MAX_LEDS 50 // Максимальное количество светодиодов при работе с пультом должно быть больше
// или равно KOL_LED
// От размера этого числа зависит колличество используемой памяти
#define IR_REPEAT 1 //Включить повтор, при долгом нажании на кнопку пульта будет повтор клавиши
//////////////////////////////////////// Параметры кнопок
////
//Настройка действия кнопке осуществляется в файле command.h
#define KEY_ON 0 // Если равен 1 используются кнопки подключенные к аналоговому входу
#define PIN_KEY A3 // Номер пина, куда подключены кнопки
//Зачения смотреть в протоколе после строки Analog Key
#define KEY_0 10 // Значение соответствующее нажатой 0 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_1 70 // Значение соответствующее нажатой 1 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_2 140 // Значение соответствующее нажатой 2 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_3 280 // Значение соответствующее нажатой 3 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_4 360 // Значение соответствующее нажатой 4 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_5 520 // Значение соответствующее нажатой 5 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_6 700 // Значение соответствующее нажатой 6 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_7 900 // Значение соответствующее нажатой 7 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_DELTA 5 // погрешность значения кнопки, тоесть от -KEY_DELTA до +KEY_DELTA
//////////////////////////////////////// Параметры гирлянды
////
#define COLOR_ORDER RGB //Очередность цвета светодиодов RGB или GRB
#define CHIPSET WS2801 //Тип микросхемы светодиодов в гирлянде
#define LED_DT 14 // Номер пина куда подключена гирлянда
#define LED_CK 11 // Номер пина для подключения тактов, применяется для светодиодов WS2801 или APA102
//ЕСЛИ НЕ ИСПОЛЬЗУЕТСЯ ЗАКОМЕНТИРОВАТЬ
#define POWER_V 5 // напряжение блока питания в Вольтах
#define POWER_I 4000 // Ток блока питания в милиАмперах
//////////////////////////////////////// Параметры программы
////
#define GLITER_ON 0 // Включить блеск при запуске
#define CANDLE_KOL 0 // если больше 0 то будут включена эмитация свечей
// число задает через какое расстояние друг от друга располагать свечи
#define CANDLE_ON 0 // Если включена эмитация свечей то 1 = при запуске она будет включена
// 0 = при запуске она будет выключена
#define BACKGR_ON 1 // Включить заполнение черного цвета фоном
#define DEMO_MODE 2 // Режим при включении
// 0 — последняя запущенная программа
// 1 — демо режим с последовательным перебором эффектов
// 2 — демо режим с случайным перебором эффектов
// 3 — демо режим с последовательным перебором выбранных эффектов
// 4 — демо режим с случайным перебором выбранных эффектов
#define MY_MODE 0,1,2,4,5,9,10,11,14,16,17,18,19, \
21, 22, 28, 30, 32, 34, 36, 37, 38
//Выбранные эффекты пишутся номера через запятую,
// можно писать и одинаковые что актуально в демо 3
// Если закоментировать, то демо 3 и 4 отключаются
#define DEMO_TIME 40 // Время отображение эффекта в демо режиме в секундах
#define CHANGE_ON 1 // Включить плавную смену эффектов
#define CHANGE_SPARK 0 // Эффект смены 0 — без эффекта, 1 — искры (бенгальский огонь) 2 — яркий свет
// 3 — метеорит, 4 — случайный эффект (из 1-3)
#define CHANGE_TIME 7 // Время в секундах, за которое произойдет плавная смена эффектов
#define DIRECT_TIME 20 // Через сколько секунд менять направление если 0 — не меняем
#define PALETTE_TIME 30 // Через сколько секунд менять палитру если 0 — не меняем
Как я понял у вас блеск отключен, но он появляется.
Дело в том, что настройка GLITER_ON 0 не отключает эффект насовсем, а отключает его при запуске. Но с пульта командой
IR_Key_Glitter можно включать эффект заново
если вам надо его отключить окончательно то закоментируйте строку 487
if(glitter) addglitter(10); // If the glitter flag is set, let's add some.
это не меняет.
это функция fill_noise16 из библиотеки FastLED. либо там ошибка, либо нехватает памяти. по ссылке
там есть состав функции
и в ней видно что идет выделение памяти uint8_t V[num_leds];
uint8_t H[num_leds];
для 300 диодов это выделение 600 байт, у вас есть свободными после компиляции больше 600 байт?
Тут либо исключить эффекты 22 и 37, либо использовать ардуину с большим процессором например Arduino Mega 2560
Я тут подумал
попробуйте в файле noise16_pal.h
Все стереть и вставить это:
noise16_pal.h
#ifndef NOISE16_PAL_H
#define NOISE16_PAL_H
// noise16 variables -----------------------------------------------------------------------
uint32_t x,hue_time; // x & hue_time values
uint8_t octaves=2; //2 // how many octaves to use for the brightness
uint8_t hue_octaves=3; //3 // how many octaves to use for the hue
int xscale=57771; //57771 // the 'distance' between points on the x axis
uint32_t hxy = 43213; //43213 // not sure about this
int hue_scale=20; //1 // the 'distance' between points for the hue noise
int hue_speed = 1; //31 // how fast we move through hue noise
uint8_t x_speed = 0; //331 // adjust this value to move along the x axis between frames
int8_t hxyinc = 3; //3
void noise16_pal() {
if (KolLed>=10) {
if (KolLed<=200)
fill_noise16(leds, KolLed, octaves, x, xscale, hue_octaves, hxy, hue_scale, hue_time);
else
if (KolLed<=400) {
fill_noise16(leds, 200, octaves, x, xscale, hue_octaves, hxy, hue_scale, hue_time);
fill_noise16(&leds[200], KolLed, octaves, x, xscale, hue_octaves, hxy, hue_scale, hue_time);
}
else
fill_noise16(leds, KolLed, octaves, x, xscale, hue_octaves, hxy, hue_scale, hue_time);
hxy+=hxyinc*thisdir;
x+=x_speed*thisdir;
hue_time+=hue_speed*thisdir;
}
} // noise16_pal()
#endif
Из самого «страшного», что заметил — это при подсветке синим цветом (включено заполнение черного цвета фоном), последний светодиод не светит. Во всех других режимах работает нормально.
youtu.be/a033JcsHJ8g
Контроллеры есть с управлением по BT(105-й вроде), но вроде там нет загрузки картинок, ещё есть с микрофоном от музыки(110-й). Управлять могут и другими гирляндами и лентами, не одновременно, а если у вас не WS2811, в приложении настраивается. С какими работает надо смотреть описание. Сам видео показать не могу, елку ещё не ставили, а про сами контролеры можно посмотреть в ютубе.
btf-lighting.aliexpress.com/store/1051119
Блок питания брал давно уже для других других разных целей, поэтому специально не покупал.
Кому срочно надо, то есть в России в наличии в некоторых магазинах, но обязательно надо уточнять, могут «надуть». И самое главное ценник сами понимаете что будет выше. У меня так живьём родня брала в Питере дабы не пролететь с гирляндой на этот НГ. Где конкретно не могу сказать, они сами бегали искали.
Это я их «соблазнил», когда они заезжали в гости, а я уже неделю как испытывал свои картинки на гирлянде намотанной на стремянку! :-)
Я о чём… Нет, за конструкцию плюс поставил.
Пожалуйста, прочтите правильно, тут нет критики. Но вот моя личная логика построения автоматизации заключается в том, чтобы свести к минимуму участие человека. Я считаю, что если я автоматизирую что-то, так это именно для того, чтобы человек в этом больше не принимал участие. Я про то, что сколько бы я ни делал «мигалок для ёлок», я пульт (или мобильниое управление) к ним никогда даже в мыслях не рассматривал :)
По мне, так лично мне в новогоднюю ночь есть чем заниматься за праздничным столом и помимо переключения режимов и палитры на ёлке :)
Но это дело, разумеется каждого, не смею навязывать своё мнение.
PS: Что касается меня, то, помимо опубликованных гирлянд в моих обзорах прошлых лет, в этом году повторяю конструкцию Стивена на ардуине-мега. Я писал об этом в одном комменте. Моё мнение не поменялось: его визуализация, для меня, на сегодня, — это эталонная отметка в художественности и эффектности на ёлке, на которую и надо равняться.
Пока не идеально, но стремимся…
Вчера она вышла с таможни во Внуково.
Есть шанс что таки дойдет до НГ :)
Тоже думал что в конце января придет
Иисус Христос, ЗАЧЕМ СТОЛЬКО ???????!!!
Лампочки притягивают.
об полна пол пошёл в другое играть.Добавлю в свои гирлянды кое что.
я думаю, достаточно пары кнопок для регулировки яркости, причём затолкать это в void loop, чтобы раз отрегулировать при запуске и забыть.
Так и эта гирлянда раз настроил и… радует
Как я понял, 2811 это отдельно RGB светик с платой, а на 2812 контроллер уже на самой пластине с кристаллом? А 2812b?
2811 это обычный светодиод и светит во все стороны, а 2812 — это SMD и светит только в одну сторону?
Кто юзал и те, и те, какой из них долговечнее в плане обрыва проводов?
2811 — это микросхема, к ней можно прицепить нак SMD светодиод или «с ножками»
2812 — тут только SMD, с буковкой b просто ног меньше
ну по поводу долговечности китайских проводов… не тут порвется, дак там протрется.
Я покупал 2812b (как в этой теме) пока ни разу не оторвались
а 12В и 5В определяется применяемыми микросхемами, есть на 12В есть на 5В
на 12В токи меньше
А вот WS2812b на 12 вольт уже цеплять НИЗЯ!!! Причина проста — цепи питания контроллера и светодиода заведены на ОДИН пин. И если вы туда сунете 12 Вольт — хана вашей WSке.
2812 и 2812b отличаются количеством ног и, соответственно, разводкой внутри корпуса. И там и там корпус 5050. Но у 2812 6 ног (по сути это тот же контроллер но совмещен со светиком), а у 2812b только 4 — 2 по питанию и 2 адресных (вход и выход).
В «традиционной» ленте светодиоды соединяют по 3 и уже потом подключают к цепи 12 В. То есть там надо погасить 12 — 3.2*3 = 2.4 В на три диода. Понятно, что результирующие потери получаются меньше, также меньше становится ток всей ленты, что требует проводов меньшего сечения. Но при этом эти три диода всегда будут гореть вместе. Для таких лент это не проблема, так как там вообще вся лента светится только одним цветом.
Я видел в продаже 12 В ленты с микросхемами (возможно, 2811), но там три рядом стоящие диоды всегда светят одинаковым цветом. Можно использовать их, но будет менее эффектно.
Поэтому, для адресных лент только 5 В.
WS2812 диоды с шестью ногами (+5v GND Din; +5v GND Dout)
WS2812B с четырьмя ногами (+5v GND Din Dout)
Благодарю.
Скетч можно сделать под себя, добавить и индикацию, примеры есть.
Места где надо выводить информацию на дисплей в программе начинаются со строк Serial.println(
Моя цель не похвастаться проектом, а побудить людей что-то сделать самим.
Начните хотя бы с типа дисплея, я подскажу.
Подсоединяем дисплей по схеме ну например такой
в Скетч добавляем следующее
Это где нибудь в начале допустим после строки
#include «commands.h» // The IR commands.
Где const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; это ваши пины, куда подключили дисплей
Далее
Этот код надо вставить внутрь функции void setup() {
Ну и теперь все должно работать
Вывод осуществляется командой
Где hello, world! это текст, вам надо заменить на свой
поесть в ROM
Контролер ардуина, всякие управления для него это дичь и излишество, сколько эффектов и палитр не знаю но за 10 минут не повторилось ни разу. Дальше не залипал, елка стоит, светится, дети рады.
Эти две ленты брал на 5 вольт. Точное расстояние не скажу, это видео прошлого года, сейчас не ставили еще елку, если достану придется собирать и елку, так что только по ссылке оценивать. Блок питания вроде на 5 или на 7 А. Брал 5 вольтовую чтоб не городить питание для ардуино нано. Ну и промышленные БП в наличии в магазине под боком. И да ленты хорошо стыкуются, больше 100 шт на такую елку не влезет.
Хотя ИМНО выше привели то же самое но лучше.
mysku.club/blog/discounts/66817.html
есть у меня три цвета rgb и белые, хочу сделать моргалку на ардуине. Моргать научился через мосфет, с этим нормально, но вот как сделать плавное включение и затухание, уже три дня пытаюсь найти… может что другое вместо мосфета купить? или плавное моргание нереально на таком сделать?
а то нагуглил в яндексе что надо некий TLC5940 шим контроллер надо брать
тут схем много как подключать как правило один провод общий для всех
яркость установлена до 50%
Таблица потребления.
в цикле loop меняем строку
Serial.println(results.value, HEX);
на
Serial.println(results.value);
будет выводится десятичное число
это число надо вставить в настройках вместо 0xfffffff
будет выглядеть так
Вот такие:
Самое похожее, что удалось найти — это бухта на 50м с доставкой федэксом за $50. Перебор.
https://aliexpress.com/item/item/50m-lot-3pin-20AWG-17pcs-0-14wires-transparent-cable-for-led-pixel-module-with-good-cold/1707323788.html
Есть проект на атмеге32, где я должен стыковаться с другим устройством на 2400 8N2.
Всю голову же сломал, не могу заставить слать 2 стоп-бита.
#define F_CPU 8000000UL
#define BAUD 2400L
#define UBRRL_value (F_CPU/(BAUD*16))-1
UBRRL = UBRRL_value;
UBRRH = (UBRRL_value >> 8);
UCSRB = (1<<TXEN)|(1<<RXEN);
UCSRC =(1<<URSEL)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0);
//UCSRC=0b10001110; — так тоже пробовал
//UCSRC = 0x8E; — и так пробовал
В итоге и в atmelstudio 7, и в протеусе 8.1 контроллер выставляет 2400, 8N1.
Как мне выставить 8N2?
и так правильно
UCSRC=0b10001110;
Значит, либо ктото переинициализирует еще в программе.
Либо попробуй передернуть
UCSRB=0x00;
UCSRB = (1<<TXEN)|(1<<RXEN);
Для страховки можно еще паузу между командами поставить в 1 милисек
Поделитесь хорошими скетчами с множеством эффектов для ардуино с WS2812., которые переключаются сами по себе без пульта. типа (бегущие огоньки, по одному, по два, вперед, назад, от средины и т, д.)
Очень нужно для утренников.
СПАСИБО.
paaev@meta.ua
Собрал схему на Arduino Nano один-в-один, пины те же. Скачал и подключил библиотеки. Запустил IRrecvDemo, записал коды кнопок пульта, прописал их в command.h (заменил своими кодами не все строки, т.к. у меня пульт маленький, кнопок немного).
Скетч notamesh1.uno вообще не правлю, все как в скачанном исходнике! Демо режим работает без вопросов, а как только нажимаю кнопку на пульте (любую — хоть прописанную в command.h, хоть нет) — всё, цикл встает. Вывод в ком-порт прекращается, диоды Rx и Tx не мигают, диоды на гирлянде замирают в одном состоянии. Прога зациклилась?
Предположил, что зацикливание идет в цикле в строке 268, но почему?! Закомментировал его, скетч зависать перестал, но работать тоже не хочет. В порт вместо команд сыпется мусор…
Не пойму, в чем причина, что надо исправить? При компиляции IDE ругается:
Это может быть причиной? Заранее благодарен за помощь!
Кстати, ругается ли IDE или просто информирует, не знаю, у меня с таким текстом часы работают, да и в других проектах вроде проблем не было.
Скетч заработал как надо! Теперь думаю, и зачем тут пульт? ))
Теперь надо дорабатывать скетч, чтобы с пульта сделать перебор только нужных эффектов. А то, некоторые слишком уж навязчивые ;)
Скажите, а 39-й эффект почему не доступен при включенном логе и управлении с пульта, — из-за нехватки памяти тоже?
Вторая версия скетча
Жена- «Божественно», я и сам пол ночи радуюсь как дитя.
Подскажите пожалуйста:
— как выбрать нужные эффекты,
— как уменьшить скорость эффектов,
— и хочется побольше эффектов на темном фоне.
А в остальном все очень и очень (КРАСОТИЩА).
Автору от всех, большой Respect.
Завтра несу в школу, будем готовится к Новому Году.
Эффекты перебираются командами
IR_D2 — предыдущий и
IR_D3 — следующий
или без пульта то переменная INITMODE
Скорость выбирается командами
IR_C2 -замедление и
IR_C3 -ускорение
К сожалению при смене эффекта скорость теряется
Но есть лазейка в функции void strobe_mode(uint8_t newMode, bool mc)
Есть case номер после него указывает номер эффекта, а в этой строке переменная thisdelay отвечает за скорость этого эффекта, это так называемая задержка, чем число меньше, тем эффект быстрее и наоборот, чем выше число, тем эффект медленне.
Поздравьте с Новым Годом школьников как следует!!!
Для настройки меняем:
здесь выставляем пины правильно, если собрана как на рисунке в теме то менять не надо
и здесь не забываем выбрать правильный тип светодиодов
Надо закоментировать не используемый и раскоментировать нужный
С этими настройками Уже будет работать.
Налетай 1
С новым Годом 2
Удачи Всем
Если есть у кого то что-то подобное -делитесь…
Давайте соберем здесь все интересные скетчи для 2812.
Ждем.
exit status 1
'one_color_all' was not declared in this scope
Подправил
#define MAX_LEDS 200 // Maximum number of LED's defined (at compile time).
надо поставить число 150
#define MAX_LEDS 150 // Maximum number of LED's defined (at compile time).
по идее должно работать
Кстати, подскажите сколько ресурсов пишет после компиляции
Лог компиляции показывает:
DATA: [===== ] 52.4% (used 1073 bytes from 2048 bytes)
PROGRAM: [======== ] 76.1% (used 23380 bytes from 30720 bytes)
Это при выключенном логировании и при вкл:
DATA: [======= ] 72.9% (used 1492 bytes from 2048 bytes)
PROGRAM: [======== ] 80.0% (used 24582 bytes from 30720 bytes)
Лог пишет в цикле:
---SETTING UP---
Initial del␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀␀
Слова ---SETUP COMPLETE--- не выводятся
Судя по логу компиляции должно все работать.
Причины могут как аппаратные так и программные.
Аппаратные
1 проверяйте питание,
2 проверяйте замыкания на плате (продуйте, может токопроводящий волосок висит),
3 с usb может идти сброс, там ножка на ресет заведена
Программные
1.Обновите библиотеки
2 обновите среду Ардуино
Может и модуль Nano может быть бракованым, как вариант проблема с ЕЕПРОМ, можно его убрать.
скетч скачало более 200 человек, вашу проблему я не встречал.
А нельзя никак сделать, чтоб был доступен с пульта 39 режим? Может, даже пожертвовав какими-то эффектами похожими что ли, чтоб памяти хватало?
Если в кратце по почистив библиотеку пульта. можно высвободить ресурсы
И еще вопрос, пока играл с эффектами и палитрами, то не понял, можно ли как-то остановить изменение цвета, чтоб, например, светилась вся гирлянда одним цветом и только мерцание сопроваждало бы этот режим. Хотел получить примерно такой эффект youtu.be/3Io4OeBP2GQ?t=183, но пока только переливается все. Подумал, что Остановка вращения палитры F1 Остановить перебор Палитр это делает, но вроде все равно переливаются разными цветами.
можно закоментировать
а в в конец функции void strobe_mode(uint8_t newMode, bool mc)
добавте строки в таком виде
Придется жертвовать частью эфектов, но я постараюсь…
Ориентировочно выйдет через неделю или раньше.
Не подскажете, хотел детям на улице елку оформить, она высокая, насчитал где — то под 370-400 светодиодов, такое уже тестировал кто — то с данным сетапом.
Почитав разные темы понял, что похоже у нано памяти не хватит на такое количество, на сколько реально можно ориентироваться, исходя из элементов с топика?
Ну и писалось про вариант с координатами, там еще будет больше данных, значит что — то будет совершенствоваться, на эту зиму есть смысл расчитывать? :)
С Уважением Дмитрий
Мега тянет более 500
На работе STM32 тянет более 2500 светодиодов
мой совет такой, если у вас нано. разбейте на 2 части и каждую часть подключите в паралель. То есть 1 светодиод и
например 201 подключите к контроллеру остальные цепочкой
Пересчитал конус, оказывается 600+ светодиодов будет, не подскажете на stm32 что и как делали?
Или в ближайшее время можно ожидать новую версию?
С уважением
Не коммерческая будет уже точно на ESP32. Разработчик FastLED ввел в нее аппаратную поддержку передатчика. Я только-только приступил к изучению и писанию кода под ESP32, могут вылезти подводные камни.
В некоммерческом виде будет весь текущий функционал, плюс расчет конуса, на ESP32 пульт заменит беспроводный интерфейс, код будет в среде ардуино, сроки пока не знаю, делаю в свободное время.
Будет готовый контроллер для лентяев.(прошей сам) с минимальной стоимостью и будет коммерческая прошивка с 2D матрицами (без FastLED)
Ардуино Nano. 28 светодиодов без пульта работает все отлично. Как только
подключаю пульт (#define IR_ON 1)
ошибка в while (!irrecv.isIdle());
Ir коды в COMMANDS_H ввел
#define MAX_LEDS 50 // Maximum number of LED's defined (at compile time).
Помогите.
Либо датчик приема с пульта сломан,
Либо наводки идут, для этого датчик закрывают в металический корпус и корпус подключают к общему проводу (в данном случае к минус питания)
Бывали случаи срабатывания, когда рядом с домом чтото светило (реально окна выходили на металлургический комбинат, а там зарево от выливания шлака на улицу) Решается задергиванием штор.
Совет:
Для начала закройте вход датчика ИК (если не заработает, то меняйте датчик, если заработает, то ищите кто излучает)
Главная фишка: здесь эфекты наслоены друг на друга и занимают минимум ресурсов.
Чувствую надо видео новое снимать, во 2 версии все намного интереснее стало.
Решил оптимизировать память, вроде неплохо получилось
Максимальное количество светодиодов не ограничено 255, можно делать больше
https://yadi.sk/d/QA7cAOHN6V0wzw
Проверяйте (вечером сам проверю), пишите в комментариях
Ну раз ресурсов много стало, в четвертом варианте будут переработаны и добавлены эффекты
Намного лучше. Все грузится.
На сигналы пульта реагирует быстрее.
Спасибо.
На всех пультах есть кнопки с цыфрами.
Как бы закрепить эффект за кнопочкой?
И с яркостью, мне кажется лучше было бы одним нажатим увеличить яркость, а не щелкать по кнопке…
Или это я уже слишком…
С нетерпением ждем 4.
кнопка 2-2ой эффект.
…
кнопки 34-34ый эффект
#define IR_A1 0xB78877 //N/P // Увеличить максимальную яркость
(было бы лучше чтобы просто при нажатии кнопки яркость плвно увеличивалась) а не тыкать
и соответственно при нажатии
#define IR_A2 0xB722DD //Repeat // Уменьшить максимальную яркость
In file included from C:\Users\Admin\Downloads\notamesh3\notamesh3\notamesh3.ino:102:0:
C:\Users\Admin\Documents\Arduino\libraries\FastLED/FastLED.h:14:21: note: #pragma message: FastLED version 3.002.001
# pragma message «FastLED version 3.002.001»
Бонусом, добавил работу пульта при долгом нажатии клавиши
Кто скачивал 3 скетч, скачайте его снова
попробуй закоментировать:
237 строку #include «fire.h»
и 443 строку case 39: if(mc) {thisdelay=10; palchg=0; thisdir=1;gCurrentPalette = CRGBPalette16( CRGB::Black, CRGB::Blue, CRGB::Aqua, CRGB::White);} fire(); break;
и в 179 строке поменять 39 на 38 uint8_t maxMode = 38;
Если зависать не будет, то виноваты ресурсы
И ждем новый скетч, там раширенная клавиатура и эфект пламени не требовательный к памяти
я почти его закончил
За год может потеряться, батарейки нужны, произвольным пультом не заменишь (нужно перешивать)
Использовать пульт от телика — нужно прикрывать телик, чтобы на него не прошли команды которые хотел послать гирлянде.
У меня самсунг — на пульте задействованы все кнопки и высокая чувствительность — ловит из соседней комнаты на отраженке от стен.
Напрашиваются 3 механических кнопки (дополнительно, а не вместо пульта)
1 — старт/стоп демо режима (заморозка текущего эффекта)
2 — выбор следующего режима. Можно даже 2 кнопки (следующего / предыдущего), ибо пролистать 39 режимов по кругу достаточно утомительно.
3 — выбор яркости. 3-5 ступеней. Иначе в полной темноте может слепить / раздражать, а при включенном свете — плохо видно.
Кнопки можно не запаивать, но хорошо если бы это было реализовано в скетче.
Памяти это не много отъест, входов свободных достаточно, можно резисторным делителем через аналоговый вход.
Меняю код на свой выдает ошибку
Коды у меня правда не похожие на стоковые.
Пример: BD5DAC9D
Пуль от iptv приставки, может в нем дело?
Спасибо.
Спасибо.
То есть для вашего случая
0xBD5DAC9D
#define IR_A1 0xBD5DAC9D //N/P // Увеличение яркости A1
Еще вопросик. Когда нужно узнать имя пульта (IRrecvDump), то пульт который хочу прикрутить он определяется как Unknown encoding. А такого варианта нет. Нужно искать другой пульт? Спс.
если все нормально, то в настройках моего скетча можно выставить любой пульт, например NEC
Теоретически должно работать
и надо нажать очень много раз чтобы код который внес в файл проскочил и функция заработала, ну и бывает, что и на каждое нажатие приходит верный код.
Походу проще физические кнопки сделать…
1. Проверьте может шумит приемник ИК (если он в металлическом корпусе то корпус надо подключить к минусу.
2, Может частота пульта не соответствует частоте приемника ИК (бывает 38 и 36 кГц) Попробуй те их подобрать.
3. Поменять пульт тоже можно
Да вы можете перейти на аппаратные кнопки, либо использовать демо режим.
Я постараюсь добавить аппаратные кнопки.
ПС: из 200 человек скачавших скетч только у двоих есть проблема с пультом.
impetus.obninsk.ru/electro/flash.html
Спасибо
Будут проблемы спрашивайте, поможем
по поводу вашего сообщения выше с интересными эффектами, такое тоже можно сделать на ардуинке.
А когда примерно выйдет 4-я версия.
Спасибо большое за качественную сборку.
Сейчас дописываю. Вечером тестирую.
Там будет много вкусностей…
Удачи Вам.
Проверяем…
мега 2560 + 200-2812b + пульт nec + лог 0 + версия 3.1 = вис на 85
сейчас проверю новую версию
PS спасибо за огромную работу
KOL_LED 60
IR_ON 1
IR_MAX_LEDS 60
CHIPSET WS2812B
------[LOG ON]---------------------------
---SETTING UP---
20, 0, 0
Initial delay: 0ms delay.
Initial strand length: 0 LEDs
Mode: 85
1002
---SETUP COMPLETE---
Start SetMode
Start SetMode
Start SetMode
Start SetMode
------[LOG OFF]--------------------------
при IR_ON 0
------[LOG ON]--------------------------
---SETTING UP---
Initial delay: 0ms delay.
Initial strand length: 60 LEDs
Mode: 0
1001
---SETUP COMPLETE---
Start SetMode
Mode: 23
30960
End SetMode
Start SetMode
Mode: 26
61040
End SetMode
------[LOG OFF]--------------------------
ЗЫ DEMO_MODE 2
Подправил скетч, теперь не будет режимов которых нет.
Скачайте четверку заново
Это эффект свечи
если поставить значение CANDLE_ON в 0
то
>>#define CANDLE_ON 1 // Включить Свечи при запуске
заменить 1 на 0
Все.
ошибка см картинку выше
если define CANDLE_ON 1-то загружается номально
1. Ошибка компиляции для 2 проводных светодиодов
2. Проблема с ЕЕПРОМ Веедены дополнительные проверки
Остальное не затронуто.
Скетч 4 обновлен, можно скачать
ошибка
а если
#define CHANGE_ON 1 // Включить смену эффектов через бенгальский огонь
то работает но надоедает
2.как минимум версия IDE
При #define CHANGE_ON 0 не объявляется переменная KolLed
148 #if CHANGE_ON == 1
149 uint8_t KolLed;
150 #endif
И это приводит к ошибке, потому что в строке
377 KolLed = NUM_LEDS;
Используется эта переменная.
1. Исправил ошибку при отключении бенгальскго огня
2. Смену плавную смену режимов можно оставить, а эффект бенгальского огня убрать
Остальное не затронуто.
Скетч 4 обновлен, можно скачать
Будут аналоговые кнопки. Схема может быть любая.
например любая из этих:
Это самый простой вариант…
С Наступающим Новым Годом!
Проблема была аналогичная вашей только с 30 диодами, работали только 30, в другом скетче с примеров библиотеки FastLED-master загорались с точностью до штуки, все 150. Провозился пол дня потом заработало. Такой вопрос, а меньше 100 светодиодов нормально устанавливается?
Я выявил это только когда повесил на елку всю гирлянду, до этого проверял все время скетчи на 100 светодиодах…
Я если честно не знаю в чем была проблема, может и не в этом, но она разрешилась.
Попробуй еще примеры по запускать из библиотеки FastLED, я с ними пробовал, проверял в них работу всей гирлянды.
качал библиотеку отсюда
Были проблемы пока не обновил библиотеку FastLED:
Скетч/Подключить библиотеку/Управление библиотеками, там выбрать тип Обновляемый и если в списке стоит FastLED обновить его нажав кнопку обновление.
Теперь по поводу сколько светодиодов работает.
Если включен пульт (IR_ON равен 1 ) то количество светодиодов берутся не из KOL_LED а из EEPROM
поменять можно будет командой с пульта IR_B2 и IR_B3 для 3 скетча или IR_Key_Length_Garland_plus и IR_Key_Length_Garland_minus для 4 скетча
Были проблемы пока не обновил библиотеку FastLED:
Скетч/Подключить библиотеку/Управление библиотеками, там выбрать тип Обновляемый и если в списке стоит FastLED обновить его нажав кнопку обновление.
Теперь по поводу сколько светодиодов работает.
Если включен пульт (IR_ON равен 1 ) то количество светодиодов берутся не из KOL_LED а из EEPROM
поменять можно будет командой с пульта IR_B2 и IR_B3 для 3 скетча или IR_Key_Length_Garland_plus и IR_Key_Length_Garland_minus для 4 скетча
Так должно быть?
Сказали бы конкретно на каком эффекте, я бы программно фофиксил.
Замечательные эффекты. и работа устройства.
Казалось бы больше нечего и не нужно, но кнопочки и резисторы потихоньку ищем…
Спасибо большое автору за проект и его поддержку.
#define COLOR_ORDER RGB //Очередность цвета светодиодов RGB или GRB
На что она влияет, на какие светодиоды рассчитана?
у меня WS2811
Можно проверить, либо загрузив пример FastLED Blink (там должен мигать красный), либо в моем скетче с пульта включить красный ( команда IR_Key_Solid_Red)
Если это не так, то поменять параметр
1. Добавлен эффект 40 Свечки (но не так как на видео, похоже, того скетча что на видео не нашел, поделитесь добавлю)
2. Добавлены эффекты плавной смены и плюс режим случайного перебора
3. Добавлена аналоговая клавиатура
4. Добавлены выбор режима как в телевизоре два варианта (кнопки 0-9 и +10 или кнопки 0-9)
5. Изменен режим свеча, можно выбрать шаг отображения.
6. выполнена оптимизация
7. исправлены мелкие ошибки и добавлены новые :)
Скетч 4 обновлен, можно скачать
Собрал на Pro Mini и установил в корпус, где уже была цветомузыка с вариантом от ЧипДип (точно не знаю чья разработка Люмазойд) и часами на esp с синхронизацией по NTP. Попоробовал даже цветомузыку на елке, но там билиберда, когда лента под шторами сверху на карнизе, то лучше смотрится.
А сама гирлянда зачетная получилась, столько эффектов. Еще и поддержка и модернизация автором. Может, она щас дапже самая крутая, как мне кажется, из тех, что встречал.
Большое года ждал паблик релиз на ардуино, правда выложено без исходников.
Но зато куча настроек через дисплей, собрал себе на 300 диодов, питание через каждые 100, родные были в восторге!
Так там можно было задавать нажатием одной кнопки колличество бегущих светодиодов.
1 нажатие — 1 светодиод
2 нажатия — 2 светодиода
— ну скажем хотябы до 5.
Было бы класно реализовать и в Вашем проекте, если это возможно, лучше всего с пульта.
Спасибо.
Раньше сам делал схемы и на триггерах и сдвиговых регистрах но теперь возможности куда шире. Я в те времена не пог предположить, что заставлю лампочку зажжется любым из 16 миллионов цветов, Теперь применимы термины волны, синусоиды, палитры.
Давайте так, если народ поддержит, то я добавлю эффекты из 80-90 годов.
Заранее благодарю всех.
Сделал бегущий огонь, в 4 плюс…
Поностальгируем.
KEY_ON 1
с выключенным пультом
вылетает с ошибкой
Относительно 96 строчки скетча У меня зарядка для мобильного 2-х амперная не тянула. Зависала на первом эффекте. Выставил 2000, всё-равно висла. Поставил 1000 и всё прекрасно заработало.
отключите лог (LOG_ON 0) и
свечки (CANDLE_KOL 0)
у меня получается
и то может зависать
Надо чтобы Глобальные переменные оставались около 500 или больше
Если не поможет придется чтото еще убирать
например пульт
Кстати, библиотека FastLed обновлена?
Скетч/Подключить библиотеку/Управление библиотеками, там выбрать тип Обновляемый и если в списке стоит FastLED обновить его нажав кнопку обновление
# pragma message «FastLED version 3.002.001»
Скетч использует 18340 байт (56%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 937 байт (45%) динамической памяти, оставляя 1111 байт для локальных переменных. Максимум: 2048 байт.
CHANGE_ON 1
CHANGE_SPARK 4
Вот лог:
---SETTING UP---
Initial delay: 0ms delay.
Initial strand length: 100 LEDs
Mode: 0
1005
---SETUP COMPLETE---
Start SetMode
Mode: 36
60656
End SetMode
Start SetMode
Mode: 30
120595
End SetMode
Start SetMode
Mode: 12
180657
End SetMode
Start SetMode
Mode: 19
240650
End SetMode
Start SetMode
Mode: 38
256613
End SetMode
Start SetMode
Mode: 39
316594
End SetMode
Start SetMode
И long lastSecond; объявл в глобальный переменных.
И еще, не разобрался почему при mode 7 происходит стабильный перезапуск процессора.
1. Переписан демо режим по нормальному, зависаний быть не должно
2. Добавлено: можно создавать списки режимов для работы в демо режиме, Появились демо 3 и демо 4 для работы с этими списками
Скетч 4 обновлен, можно скачать
скинте ваши настройки
Надеюсь скетч 4 перезагрузили, в демо ошибка была
MY_MODE 2,7,9,8
И в этот раз зависло после 7 режима. Повторил — тоже зависло.
Далее выставил
CHANGE_SPARK 0
Т.е. уже не зависает, а после 7 режима опять нулевой и так по кругу
Автору спасибо огромное!
Год назад я тоже на beatsin зависоны ловил, вот и решил глянуть из-за чего.
ПыСы пару часов уже без зависона две гирлянды по 75 светиков на Arduino pro mini
Всех с наступающим Новым Годом!
скинте все настройки
у меня нет зависаний
FastLED обновлена?
сколько ресурсов после компиляции?
При KOL_LED=IR_MAX_LEDS
Если сделать так как выше написал — то все гуд!
1. Исправлена ошибка. при CHANGE_SPARK 4 эффекты случайно не менялись. Исправлено
2. Списки режимов теперь не расходуют оперативную память, можно список делать до 255 элементов.
Скетч 4 обновлен, можно скачать
С наступающим Новым Годом!!!
если у вас стоит COLOR_ORDER RGB поменяйте на COLOR_ORDER GRB
или наоборот
если у вас стоит COLOR_ORDER GRB поменяйте на COLOR_ORDER RGB
Если не используете кнопки Гайвера (появились недавно) то проверьте параметр SAVE_EEPROM он должен быть
либо SAVE_EEPROM 2 либо SAVE_EEPROM 0 чтобы COLOR_ORDER заработал
параметр SAVE_EEPROM 0 как раз и отключает хранение
Сможете вывести красный цвет и посмотреть реально он красный или зеленый?
если не знаете как подскажу
Я так понимаю, она должна светиться только при подаче управления?
Китаец прислал гирлянду с пробитыми чипами?
Как себя должна вести исправная лента?
ЗЫ С НГ!!! Это был тяжелый год © Слепаков
Отзывы нормальные.
По идее ws2812b — это та же 2811 без корпуса, интегрированнвя прямо в сборку с диодами? Хотя пишут что тайминги отличаются немного.
Может я управление не с той стороны подаю?
Нигде не описано.
Есть 2 разъема, один мама, там еще 2 провода питания, другой — папа, для следующей гирлянды.
Гирлянда без контроллера загорается белым (условно белым, светятся все кристаллы, цвет чуть розоватый), подаю управление — изменений нет.
Попробовал несколько библиотек — FastLed, Adafruit Neopixel
Компилировал их примеры
Похоже придется осциллограф доставать
проткните тонкой иглой провод, сигнальный, идущей ко второму светодиоду, и подайте управление
Извиняюсь за тупые вопросы:
тип светододов выбран правильно?
и пин управления с ардуино тоже?
Ардуина с несколькими битыми портами была, методом перебора нашел целый — демка пошла
Ща скомпилю Ваш проект и можно вешать на ёлку :)
Похоже нашел ошибку — некоторые эффекты считают что диодов не 50, как указано в 2-х местах в настройках, а 49
Последний диод может зависнуть на выходе из эффекта. Например бегут сине-зеленые волны, а он ярко-розовый с предыдущего эффекта.
Потом опять нормально, потом опять не хватает шага.
Поставить в настройках 51 диод?
Или это последний чип зависает (провода очень тонкие)? Хотя, тогда бы не развисал при смене эффектов.
В любом случае Спасибо и с Новым Годом!!!
Отладку не включал — шил со стационарного компа, а он в другой комнате
Старенький ноут не потянул новую IDE :(
Другие опции (отключение плавных переходов и прочие) не проверял по той же причине.
Питания с запасом — delta electronics 5v/2.5a на 50 диодов, в скетче выставлено 2000 ма.
Но когда работает — смотрится шикарно!
За совет спасибо. В следующем году попробую :)
1. Исправлена ошибка KOL_LED=IR_MAX_LEDS (зависание)
2. Исправлена ошибка в эффектах 2 5 9 12 14 18 26 ( последний светодиод теперь работает)
3. Исправлена ошибка перехода с 39 на 40 эффект (не всегда была)
4. исправлено еще чтото по мелочам
5. сделал список переливающихся эффектов (которые у меня оставлены по умолчанию)
Скетч 4 обновлен, можно скачать
Глобальные переменные должны оставлят больше 500 байт иначе могут быть зависания. чтобы уменьшить память можно поотключать не используемое. У вас отключение лога, как раз освободилонужную память
настройки не туда скинул, они где то ниже получились
и IR_MAX_LEDS 51
и должно все быть хорошо
Со временем переставите на 100 и 200
//////////////////////////////////////// Параметры пульта////
//Настройка действия кнопке осуществляется в файле command.h
#define IR_ON 1 // Если равен 1 используется пульт
// если не равен 1 пульт не используется, работает в демо режиме
#define PIN_IR 8 // Номер пина, куда подключен датчик пульта,
#define IR_MAX_LEDS 50 // Максимальное количество светодиодов при работе с пультом должно быть больше
// или равно KOL_LED
// От размера этого числа зависит колличество используемой памяти
//Тип пульта на который будет реагировать устройство, ставим 1 у того который используется
//это уменьшит используемую память
//Чтобы узнать имя пульта запустите в примерах IRremote / IRrecvDump
#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 //Включить повтор, при долгом нажании на кнопку пульта будет повтор клавиши
//////////////////////////////////////// Параметры кнопок
////
//Настройка действия кнопке осуществляется в файле command.h
#define KEY_ON 0 // Если равен 1 используются кнопки подключенные к аналоговому входу
#define PIN_KEY A3 // Номер пина, куда подключены кнопки
//Зачения смотреть в протоколе после строки Analog Key
#define KEY_0 10 // Значение соответствующее нажатой 0 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_1 70 // Значение соответствующее нажатой 1 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_2 140 // Значение соответствующее нажатой 2 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_3 280 // Значение соответствующее нажатой 3 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_4 360 // Значение соответствующее нажатой 4 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_5 520 // Значение соответствующее нажатой 5 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_6 700 // Значение соответствующее нажатой 6 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_7 900 // Значение соответствующее нажатой 7 кнопке
// если значение меньше KEY_DELTA, то кнопка не используется
#define KEY_DELTA 5 // погрешность значения кнопки, тоесть от -KEY_DELTA до +KEY_DELTA
//////////////////////////////////////// Параметры гирлянды
////
#define COLOR_ORDER RGB //Очередность цвета светодиодов RGB или GRB
#define CHIPSET WS2801 //Тип микросхемы светодиодов в гирлянде
#define LED_DT 14 // Номер пина куда подключена гирлянда
#define LED_CK 11 // Номер пина для подключения тактов, применяется для светодиодов WS2801 или APA102
//ЕСЛИ НЕ ИСПОЛЬЗУЕТСЯ ЗАКОМЕНТИРОВАТЬ
#define POWER_V 5 // напряжение блока питания в Вольтах
#define POWER_I 4000 // Ток блока питания в милиАмперах
//////////////////////////////////////// Параметры программы
////
#define GLITER_ON 0 // Включить блеск при запуске
#define CANDLE_KOL 0 // если больше 0 то будут включена эмитация свечей
// число задает через какое расстояние друг от друга располагать свечи
#define CANDLE_ON 0 // Если включена эмитация свечей то 1 = при запуске она будет включена
// 0 = при запуске она будет выключена
#define BACKGR_ON 1 // Включить заполнение черного цвета фоном
#define DEMO_MODE 2 // Режим при включении
// 0 — последняя запущенная программа
// 1 — демо режим с последовательным перебором эффектов
// 2 — демо режим с случайным перебором эффектов
// 3 — демо режим с последовательным перебором выбранных эффектов
// 4 — демо режим с случайным перебором выбранных эффектов
#define MY_MODE 0,1,2,4,5,9,10,11,14,16,17,18,19, \
21, 22, 28, 30, 32, 34, 36, 37, 38
//Выбранные эффекты пишутся номера через запятую,
// можно писать и одинаковые что актуально в демо 3
// Если закоментировать, то демо 3 и 4 отключаются
#define DEMO_TIME 40 // Время отображение эффекта в демо режиме в секундах
#define CHANGE_ON 1 // Включить плавную смену эффектов
#define CHANGE_SPARK 0 // Эффект смены 0 — без эффекта, 1 — искры (бенгальский огонь) 2 — яркий свет
// 3 — метеорит, 4 — случайный эффект (из 1-3)
#define CHANGE_TIME 7 // Время в секундах, за которое произойдет плавная смена эффектов
#define DIRECT_TIME 20 // Через сколько секунд менять направление если 0 — не меняем
#define PALETTE_TIME 30 // Через сколько секунд менять палитру если 0 — не меняем
#define LOG_ON 1 // Включить лог 1 — включить лог
Дело в том, что настройка GLITER_ON 0 не отключает эффект насовсем, а отключает его при запуске. Но с пульта командой
IR_Key_Glitter можно включать эффект заново
если вам надо его отключить окончательно то закоментируйте строку 487
#define GLITER_ON 1 // Включить блеск при запуске
Понял про мелькание. Блеск был включен. Но, почему только первые 43 светодиода.
Эффект мне нравится. Где его продлить на всю ленту? 300 светодиодов.
Спасибо!
У меня гирлянда меньше, вызуально ошибку пока не нашел.
Если раздражает установите CHANGE_ON 0
Обновил Скетч 4
По поводу цветной волны. Скорее всего, это своеобразная визуальная инициализация, т.к. она появляется только при старте ардуинки.
По поводу цветной волны. Это часть эффекта blendwave(), который глючит при количестве светодиодов более int8.
Изменил beatsin8 на beatsin16 в модуле blendwave.h и волна побежала по всей ленте.
Но теперь зависает на 21м режиме. :(
это функция fill_noise16 из библиотеки FastLED. либо там ошибка, либо нехватает памяти.
по ссылке
там есть состав функции
и в ней видно что идет выделение памяти
uint8_t V[num_leds];
uint8_t H[num_leds];
для 300 диодов это выделение 600 байт, у вас есть свободными после компиляции больше 600 байт?
Тут либо исключить эффекты 22 и 37, либо использовать ардуину с большим процессором например Arduino Mega 2560
попробуйте в файле noise16_pal.h
Все стереть и вставить это:
Если заработет отпишитесь.
если и после этого зависнет
значит гдето еще сосет память.
Надо либо исключить эффекты 22 и 37, либо использовать ардуину с большим процессором например Arduino Mega 2560
Исключил эффекты до лучших времен. (Может после праздников поковыряю)
Спасибо.