ARDUINO Цветомузыка на Arduino. FireEdition.

Что нужно сделать в первую очередь?

  • Оптимизировать/исправить баги в текущем варианте

  • Добавлять новых эффектов/функций

  • Улучшить обработку звука

  • Автору виднее, что лучше.


Результаты будут видны только после голосования.
Цветомузыка на Arduino. FireEdition.
Всем здрасте) Представляю своё видение данного проекта.

В общем собрал систему на основе прошивки от technotrasher (за что ему респект). Ленту 30 диодов на метр и длинной 102 диода приклеил под подоконником на балконе. Решил добавить «Огонь» на Пёрлине, а дальше всё как в тумане…

ВНИМАНИЕ! Данная прошивка УСЛОВНО совместима с оригиналом от Гайвера. Отличается БОЛЬШИМ количеством дополнительных функций/настроек/эффектов, все подробности под спойлерами.
Прошивка хоть и основана на Гайверовской, но ощутимо отличается как по функционалу, так и по управлению и программной части. Поэтому далее по тексту будет не сравнение с оригиналом, а просто описание основных возможностей. В связи с тем, что проще указать, что в них общего, нежели перечислять отличия.
В прошивке несколько десятков эффектов. Половина из них зависят от звука, а половина выступают в роли обычной Подсветки. В данной реализации они по возможности логично разделены на 9 групп (Режимов). И каждый Режим разделяется на Подрежимы (Эффекты).

Может работать от микрофона или от линейного входа. Либо одновременно с возможностью переключения.

Настройки для каждого Эффекта не зависят друг от друга и сохраняются отдельно.

Настроить можно скорость/яркость/плавность и т.д., в зависимости от Эффекта.

Функция «Демо», при которой Подрежимы в выбранном Режиме будут автоматически сменять друг друга.

Функция «Тишина». В случае, если на определенное время музыка останавливается, то система переключается на Подсветку. При появлении звука вновь возвращается к Режиму цветомузыки.

Возможно управлять с ик пульта или с двух физических кнопок.

Возможно настроить «плотность пикселей», чтобы на ленте 30 диод/метр и 144 диод/метр Эффекты выглядели более-менее одинаково.

Присутствует индикация (нажатие кнопок, дежурный режим и т.д.) либо на распаянных светодиодах, либо на самой ленте.

Можно изменить ориентацию направления Эффектов, где анимация идёт от краёв к центру или от центра к краям. Полезно, если лента разделена на две части (два вертикальных столба) и уже смонтирована.

Функция ДопКанал (ДК). Это возможность в дополнение к «адреске» подключить к системе обычную RGB ленту любой длинны или RGB прожектор’ы (да вообще любые RGB источники света). В зависимости от выбранного режима ДК будет либо жить «своей жизнью» и, например фигачить стробоскоп, либо дополнять основной Эффект.

Возможно выбрать как стартовать после отключения питания. Либо с последнего активного режима, либо всегда с определенного. Во втором случае в зависимости от модели использования можно, например выбрать старт с «режима ожидания», чтобы лента не вспыхивала среди ночи после скачка электричества. Либо наоборот повесить систему на обычный выключатель света (подсветка рабочей зоны на кухне, верхний свет и т.д.), выбрать старт с «Белого» и использовать как обычный источник света, а в режиме «вечеринки» использовать пульт. Либо в случае исключительно «дискотечного» использования всегда с ходу включать «цветомузыку» без лишних движений.

Всё это по возможности максимально «модульное», то есть нужное можно подключить, а ненужное отключить.
Прежде чем задать вопрос в обязательном порядке необходимо ознакомиться с информацией под всеми спойлерами. В том числе там описано как именно нужно задавать вопрос. Не торопитесь писать мне в личку, тут ответят гораздо быстрее.
Активируется настройкой "IR_REMOTE"
Настройка "WAVGAT" - "1"
Использование пульта WAVGAT не рекомендуется. Особенно если планируется пользоваться всем функционалом прошивки. Управление будет сильно перегружено. И сам по себе WAVGAT плохого качества.
1645565730405.png
Настройка "WAVGAT" - "0"
Желательно использовать какой-нибудь пульт от старой техники. Они намного более качественные и на них больше кнопок.
Вот пример как можно настроить управление при наличии большего количества кнопок.
1647204883874.png
Активируется настройкой "BUTTONS"

Имеется Кнопка А и Кнопка В
1. Кнопка А листает режимы с 1 по 9 (и в обратную сторону при двойном клике).
2. Кнопка В листает подрежимы, то есть аналог "*" (и соответственно двойной клик - "#")
3. Длинный клик на А - аналог "0"
4. Длинный клик на В - аналог "Ок"
5. Зажать кнопку А и клацать на В - аналог вверх (двойной клик - вниз)
6. Зажать кнопку В и клацать на А - аналог вправо (двойной клик - влево)
7. Тройной клик на А - аналог повторного нажатия на цифру текущего режима.
8. Тройной клик на В - аналог 4/6-кратного нажатия "Ок"
Функция ДопКанал (ДК). Позволяет в дополнение к адреске подцепить обычную RGB ленту любой длинны (или прожектор например).
А - всё тоже самое, что и на первой кнопке,
В - тоже что и третья кнопка (стробоскоп),
С - "Авто" подстраивается под происходящее на адреске. Если на адреске стробоскоп - то и на ДопКанале стробоскоп, если на адреске зеленый цвет - то и на ДК зеленый цвет, если на адреске плавный огонь - то и ДК переливается в этих же оттенках и тд. Пока "Авто" не оптимизирована под все эффекты.
D - отключен.
Хз кому всё это нужно, но на мой взгляд прикольно. Можно зафигачить по периметру всей комнаты RGB, а допустим над окном адреску. Использовать как обычный свет/подсветку в обычной жизни, а в режиме вечеринки всё это дело будет вызывать эпилепсию. Либо при сборке какой-то переносной конструкции можно будет интересней обыграть проект. Либо использовать ДК вместо "яркость негорящих".

В общем у меня был чисто спортивный интерес к реализации.

Варианты подключения:
На контакты 9-11 через RGB Amplifier китайский или самодельный. Подробно об RGB лентах ТУТ. Поставить в настройках "SUB_CHAN". Так же в настройках можно указать общий катод или анод. При этом индикация на диодах самовыпилится.
Подцепить к последнему пикселу адрески еще один дополнительный адресный чип. И далее уже к нему подпаять RGB Amplifier.

Добыть этот чип можно разными способами:

1 - Купить адресную гирлянду на 50 пикселов ТАКУЮ. Отрезать последний пиксел. Расковырять. Припаять RGB Amplifier вместо/параллельно диоду. Оставшуюся гирлянду использовать по назначению. (я именно так и тестировал).

2 - Купить минимальный отрезок устаревшей WS2811 у которой диоды объединены в группы по три. Отрезать одну такую группу. Припаять RGB Amplifier вместо/параллельно диоду. (планирую испытать, но проблем быть не должно).

3 - Умудриться купить чип отдельно (и тогда поделиться информацией где). Я находил только пачкой в 500 штук.

В настройках "SUB_LEDS" указать количество дополнительных пикселов от 1 до много. Поясняю:

У вас есть 100 пикселов адрески. И вы решили прицепить еще один пиксел с припаянным RGB Amplifier. Значит нужно оставить в основных "NUM_LEDS" 100, а в "SUB_LEDS" указать "1"

У вас есть 100 пикселов адрески. И еще остался обрезок на 20 пикселов и вы решили просто посмотреть как это вообще будет работать и надо ли оно. Цепляете этот обрезок в конец своей ленты. В "NUM_LEDS" оставить 100, а в "SUB_LEDS" указать "20"

Самые умные и ленивые уже поняли, что если впадлу суеиться, но интересно протестировать можно сделать так: В "NUM_LEDS" указать допустим 70, а в "SUB_LEDS" указать "30".
Свой пульт с большим количеством кнопок. Рекомендуется.
Необходимо забиндить дополнительные кнопки пульта на переключение Режимов и Подрежимов ДК.

Пульт WAGWAT. Не рекомендуется.
Два раза нажать "ОК"

Активируется режим настройки ДК. Первые 4 диода горят синим.

Цифры на пульте: 1 - Первый Режим, 2 - Авто, 3 - Стробоскоп, 4 - Выкл.
Кнопки */#: переключают Подрежимы, но не адрески, а ДК.

Нажать "ОК" что бы выйти из режима настроек ДК.

Умные задаются вопросом, а как же теперь с 4-кратным нажатием. Да, теперь при активации ДК оно стало 6-кратным.

У меня не работает. Что делать?
Очень жаль. Не знаю.

Не ну правда?
Правда не знаю.

Ардуина вообще работает? Накатите тестовый скетч «блинк» и проверьте. (в приложении)
Лента вообще работает? Накатите тестовый скетч для ленты и проверьте. (в приложении)
Пульт вообще работает? Накатите тестовый скетч для пульта и проверьте. (в приложении)
Микрофон вообще работает? Накатите любой тестовый скетч для микрофона и проверьте. Тестовые скетчи искать в интернетах, кто первый найдет и оптимизирует (под наши пины) весь комплект - присылайте, прикреплю (часть я уже сделал).

Если что-то из этого не работает по отдельности, то не нужно пытаться запустить всё в сборе и надеяться, что оно само починится. Не починится, разберитесь сначала со своими «железками». Не нужно сразу всё паять, собирайте на макетке иначе вообще никогда не поймете в чем проблема.

Если по отдельности всё работает (на тех же пинах, что и в схеме), значит хоть что-то и с прошивкой должно работать. Напишите конкретно какие режимы не работают или работают неправильно, какая версия прошивки, какая схема (что конкретно и к каким пинам подключено) и при каких настройках.


Хочу как на схеме, микрофон + стереовход!
Делай как на схеме, и настройку «MONO_STEREO» меняй на «0».

Хочу только микрофон!
Ставь только микрофон (как на схеме), и настройку «MONO_STEREO» меняй на «1».

Хочу только линейный стереовход!
Ставь только линейный вход (как на схеме), и настройку «MONO_STEREO» меняй на «2».

Хочу только линейный моновход!
Ставь линейный вход на пин для микрофона, и настройку «MONO_STEREO» меняй на «1».

Хочу три микрофона, один линейный моновход и два дополнительных стереовхода, но я уже всё припаял на первые попавшиеся пины!
Переписывай прошивку. Очень многое прокомментировано. Переназначить пины – элементарно если потратить 10 минут и разобраться.

Как мне откалибровать шум?
1. Включить нужный вход (MIC или LINE) - нажимать "0" в режиме настроек "ОК". Микрофон и линейный калибруются независимо друг от друга!
2. Включить нужный эффект 4-7 (частоты) или 8-9 (уровни). Эти две группы калибруются независимо друг от друга!
3. Нажать 4 раза "ОК"
4. НО!!! Если имеется переменный резистор (крутилка), то повторяйте пункт "3" в разных положениях резистора. По центру, в крайнем правом, в крайнем левом и т.д. Ищите оптимальное положение! Затем уже ПОСЛЕ калибровки ОПЯТЬ можно немного покрутить. Экспериментируйте.


У меня не очень хорошо работает реакция на звук и особенно на частоты.
У меня тоже, а особенно реакция на частоты. Но если все собрать даже на макетке, поставить прошивку, сбросить настройки и откалибровать шум – то худо-бедно работать должно, а дальше уже играться с настройками чувствительности и крутить резистор подгоняя под свою систему. На форуме есть разные решения. А я потихоньку буду ковырять код и сообщать об успехах.
Вот одно из решений.
Итак, первая партия тестовых скетчей. 3 штуки.
Первый - обычный "Blink", для проверки самой платы. Просто мигает встроенным светодиодом раз в секунду. Если у Вас даже это не работает, то стоит призадуматься.
Второй - проверка ленты и питания. Указываем количество светодиодов и лимит по току (если надо). Запускается простенькая анимация Радуги. Через пять секунд включается стробоскоп с довольно "агрессивными" настройками и через 5 секунд опять Радуга. Так до бесконечности.
Если первые 5 секунд всё работает нормально, а потом плата зависает на стробоскопе - я Вас поздравляю, что-то с питанием. На "вспышке" оно сильно проседает и плата зависает. Меняйте блок питания, меняйте провода на более толстые, ставьте конденсаторы, уменьшайте лимит по току в настройках и т.д.
Третий - проверка пульта. Накатываем скетч, открываем монитор порта (выставляем 9600). Жмакаем кнопочки. Названия кнопочек ("Звездочка", "Решетка" и т.д.) выводятся в порт. Помимо этого выводится еще код кнопки. Если кнопка не распознана, то выведет код кнопки и напишет "Нипанятна!". Если ничего этого не происходит - делаем очевидный вывод.

П.С. при тестировании Третьего скетча выяснилась интересная особенность и причина одного "бага". Пульт WAVGAT - редкостное говно.
При нажатии на одну и ту же кнопку может выдать сразу два-три кода (основной и паразитные). С первого раза может вообще не распознаться код. Если зажать кнопку и не отпускать - не распознается. В общем в том числе и поэтому ЦМ с первого нажатия далеко не всегда срабатывает.
П.П.С первый попавшийся пульт от телека отрабатывает как положено и таких глюков не имеет. Стабильно выдает один и тот же код на одну кнопку.

Скетч для проверки/настройки звука будет позже, там сложнее.
  • Дальнейшая оптимизация - теперь поддержка до 300 диодов. Благодарность за тестирование и наводку Aleksandr1612
  • Добавлена возможность изменять ориентацию режимов "Шкала громкости" и "Огонь" - от центра/к центру.
  • Эффекты на "Пёрлине" (Плавный огонь, Облака, Плазма и тд.) теперь реагируют на звук. Каждый немного по своему. Если 3 секунды звука нет, то они возвращаются к своему обычному состоянию.
  • Теперь прошивка совместима со схемой от tehnotraher и OlegAnadyr, в прошивку добавлена соответствующая настройка (протестировать возможности нет, буду рад отзывам)
  • Добавлена настройка отключения индикации на ленте и на диодах
  • Добавлена настройка отключения LINE
  • Добавил несколько цветовых эффектов - ничего особо примечательного, просто для массовки
  • Настройка яркости теперь реализована "правильно" и распространяется на все эффекты
  • Оптимизация - переназначил половину переменных, констант и дефайнов. Оптимизировал функции, дописал новые и тд.
  • Еще глубже оптимизирована структура кода (занятной памяти и строк в коде становится меньше, а функционал растёт), исправлены ошибки/баги. Добавлены комментарии.
  • Исправлено отключение MIC и LINE если используется что-то одно (настройка в прошивке - "MONO_STEREO").
  • Исправлена работа пульта (индикация и сохранение настроек теперь работает правильно).
  • Добавлена возможность переключения MIC/LINE с пульта для схемы без тумблера (в режиме настроек "ОК" нажать кнопку "0").
  • Добавлена возможность выбора цвета стробоскопа (повторное нажатие "3" меняет режимы белый/цветной, */# - выбор цвета).
  • Цветомузыка 3/5 полос теперь на одной кнопке - "6" (повторное нажатие "6" - выбор 3/5 полос, */# - перебор всех возможных комбинаций).
  • Анализатор спектра уехал на кнопку "7", а на "8" теперь с подачи tehnotraher и при его участии новый режим в тестовом варианте. (В зависимости от громкости с разной скоростью вылетают огоньки с краю/центра).
  • Исправлена досадная ошибка с фигурными скобками, о которой много раз отвечал в личке и на форуме.
  • Выпилил выбор схемы. Теперь одна простая универсальная модульная схема (во вложении). Не нужны диоды? Не паяем и отключаем в настройках (INDICATE_ LED 0). То же самое с кнопками (BUTTONS 0), микрофоном и аудиовходом. Микрофон питается напрямую от пина (по потреблению там всё ок), кому надо тот сам разберется куда вставить транзистор или вообще запитать на постоянный +. Не забываем про конденсаторы на питание, чем жирнее – тем лучше. Ну и подсказка: даже если используете один вход можно поставить в настройках два и тогда при переключении просто будет отключаться реакция на звук, мало ли может пригодится кому-то.
  • На кнопке «8» добавлены режимы и настройки. Повторное нажатие «8» - переключает способ «раскрашивания»: радуга/рандом/пара близких цветов. */# - перебор режимов, кнопки «верх/низ» - насыщенность, «лево/право» - цвет пары цветов.
  • Добавлена индикация на ленте режима MIC (первые 4 диода – зеленые), LINE (красные). Для переключения между MIC и LINE – нажать «ОК», а затем «0».
  • Почистил баги, добавил новые. Написал кучу комментариев и тд.
  • Исправил режим 8.2. Ломался если было больше 200 пикселей.
  • Добавил настройку отключения имитации стерео для режима «Уровень громкости». Теперь за это отвечает настройка: «PSEUDO», 1 – включено, 0 – отключено.
  • Добавил функцию отслеживания «тишины» и автоматического включения подсветки спустя n секунд. В настройках: «SILENCE», 1 – включено, 0 – отключено. «SILENCE_TIME» - через какое время включать подсветку.
Работает так:
1. Выбираешь подсветку какая больше нравится (из 1 или 2 режима) настраиваешь по душе.
2. Потом если нужна "цветомузыка", переключаешь на нужный режим пусть будет 9 (Уровни)
3. Если музыка не звучит более 3 секунд (можно настроить), то устройство переходит в режим, который был настроен в пункте 1.
4. Как только появляется звук, то переключается обратно в режим из пункта 2
и так далее до бесконечности.
  • Добавил настройку, отвечающую за «плотность ленты» (количество светодиодов на метр). Настройка: «STRIPE_DENSE», 1 – низкая плотность (30 диодов на метр), 2 – средняя плотность (60-90 диодов), 3 – высокая плотность (144 диода). Пока не очень оптимально, нужна обратная связь, пробуйте разные варианты – говорите, что подкрутить. В предыдущих прошивках настройки режимов соответствуют «низкой плотности».
  • Поправил режим 5 «Бегущие частоты», теперь приоритет на «высокие» (как в оригинале) и не должно заливать всё красным.
  • Опять «покрутил» режим «8», вроде немного получше стало, но еще не идеально.
  • Улучшил баги, добавил ошибки…
  • Выпилил и переписал кучу кода, отвечающего за "Уровни". Поправил баг с оранжевым на концах. За одно добавил туда палитру "Океан".
  • Обновил библиотеку FastLed. Не забудьте скачать новый архив с библиотеками.
  • Настройки подсветки "Тишины" теперь сохраняются 4-кратным нажатием "Ок"
  • Сделал возможным работу на малом количестве диодов (проверял на 10)
  • Добавил падающие точки в "Уровни", спасибо Fantazm. Отключаются через параметр "PEAKS". За одно добавил туда несколько стандартных палитр из библиотеки.
  • Добавил подрежим "Демо" на каждой "цифре". Если его включить, то все эффекты этой кнопки меняются по кругу через каждые 15 секунд (параметр "TOOGGLE_TIME"). Просто #/* листаем до него.
  • Много изменений под капотом, но это всё равно никому не интересно)
  • Изменен алгоритм для обработки уровней. Старый код вырезан вместо него используется код из библиотеки Гайвера.
  • Добавлено новое "полноценное" управление на 2 кнопках. И заменена кнопочная библиотека. Включение: настройка "BUTTONS".
  • Добавлена функция ДопКанал (ДК). Позволяет в дополнение к адреске подцепить обычную RGB ленту любой длинны (или прожектор например).
  • Полностью переписано хранение/сохранение настроек. Теперь для каждого эффекта свои уникальные настройки.
  • Добавлены настройки запуска системы после отключения питания.
  • Все настройки на первой страницы перегруппированы и разбиты на блоки для удобства.
14.03.2022 v3.1:
  • Исправлено огромное количество багов.
  • Добавлено более гармоничное управление пультами с большим количеством кнопок.
  • Переписан "Стробоскоп". Вырезана плавность старта и затухания. Добавлен двухцветный Подрежим.
1. Расширить функционал ДК:
  • оптимизировать режим "Авто" под все эффекты.
  • добавить "реакцию на звук".
  • добавить новых "комбо" режимов с изначально продуманной совместной работой ДК и Адрески.
2. Добавить поддержку 7-сегментного индикатора совместно с SeGAD.
3. Использовать библиотеку MicroLed.
4. Улучшить обработку звука.
Скачать: прошивка, библиотеки, тестовые скетчи.
Шпаргалка для пульта тут, не забудьте поставить лайк энтузиасту.

П.С. большая благодарность всем кто отписывает на форуме, это сильно помогает и вдохновляет.
1616446492224.pngaaf83d60-ac6c-415d-a03e-62069d61db0f.jpg
 

Вложения

Изменено:

Комментарии

Slenk

★★★★★★✩
21 Янв 2020
382
591
34
Краснодар
Всем здрасте) Представляю своё видение данного проекта.

В общем собрал систему на основе прошивки от technotrasher (за что ему респект). Ленту 30 диодов на метр и длинной 102 диода приклеил под подоконником на балконе. Решил добавить «Огонь» на Пёрлине, а дальше всё как в тумане…

ВНИМАНИЕ! Данная прошивка УСЛОВНО совместима с оригиналом от Гайвера. Отличается БОЛЬШИМ количеством дополнительных функций/настроек/эффектов, все подробности под спойлерами.
Прошивка хоть и основана на Гайверовской, но ощутимо отличается как по функционалу, так и по управлению и программной части. Поэтому далее по тексту будет не сравнение с оригиналом, а просто описание основных возможностей. В связи с тем, что проще указать, что в них общего, нежели перечислять отличия.
В прошивке несколько десятков эффектов. Половина из них зависят от звука, а половина выступают в роли обычной Подсветки. В данной реализации они по возможности логично разделены на 9 групп (Режимов). И каждый Режим разделяется на Подрежимы (Эффекты).

Может работать от микрофона или от линейного входа. Либо одновременно с возможностью переключения.

Настройки для каждого Эффекта не зависят друг от друга и сохраняются отдельно.

Настроить можно скорость/яркость/плавность и т.д., в зависимости от Эффекта.

Функция «Демо», при которой Подрежимы в выбранном Режиме будут автоматически сменять друг друга.

Функция «Тишина». В случае, если на определенное время музыка останавливается, то система переключается на Подсветку. При появлении звука вновь возвращается к Режиму цветомузыки.

Возможно управлять с ик пульта или с двух физических кнопок.

Возможно настроить «плотность пикселей», чтобы на ленте 30 диод/метр и 144 диод/метр Эффекты выглядели более-менее одинаково.

Присутствует индикация (нажатие кнопок, дежурный режим и т.д.) либо на распаянных светодиодах, либо на самой ленте.

Можно изменить ориентацию направления Эффектов, где анимация идёт от краёв к центру или от центра к краям. Полезно, если лента разделена на две части (два вертикальных столба) и уже смонтирована.

Функция ДопКанал (ДК). Это возможность в дополнение к «адреске» подключить к системе обычную RGB ленту любой длинны или RGB прожектор’ы (да вообще любые RGB источники света). В зависимости от выбранного режима ДК будет либо жить «своей жизнью» и, например фигачить стробоскоп, либо дополнять основной Эффект.

Возможно выбрать как стартовать после отключения питания. Либо с последнего активного режима, либо всегда с определенного. Во втором случае в зависимости от модели использования можно, например выбрать старт с «режима ожидания», чтобы лента не вспыхивала среди ночи после скачка электричества. Либо наоборот повесить систему на обычный выключатель света (подсветка рабочей зоны на кухне, верхний свет и т.д.), выбрать старт с «Белого» и использовать как обычный источник света, а в режиме «вечеринки» использовать пульт. Либо в случае исключительно «дискотечного» использования всегда с ходу включать «цветомузыку» без лишних движений.

Всё это по возможности максимально «модульное», то есть нужное можно подключить, а ненужное отключить.
Прежде чем задать вопрос в обязательном порядке необходимо ознакомиться с информацией под всеми спойлерами. В том числе там описано как именно нужно задавать вопрос. Не торопитесь писать мне в личку, тут ответят гораздо быстрее.
Активируется настройкой "IR_REMOTE"
Настройка "WAVGAT" - "1"
Использование пульта WAVGAT не рекомендуется. Особенно если планируется пользоваться всем функционалом прошивки. Управление будет сильно перегружено. И сам по себе WAVGAT плохого качества.
1645565730405.png
Настройка "WAVGAT" - "0"
Желательно использовать какой-нибудь пульт от старой техники. Они намного более качественные и на них больше кнопок.
Вот пример как можно настроить управление при наличии большего количества кнопок.
1647204883874.png
Активируется настройкой "BUTTONS"

Имеется Кнопка А и Кнопка В
1. Кнопка А листает режимы с 1 по 9 (и в обратную сторону при двойном клике).
2. Кнопка В листает подрежимы, то есть аналог "*" (и соответственно двойной клик - "#")
3. Длинный клик на А - аналог "0"
4. Длинный клик на В - аналог "Ок"
5. Зажать кнопку А и клацать на В - аналог вверх (двойной клик - вниз)
6. Зажать кнопку В и клацать на А - аналог вправо (двойной клик - влево)
7. Тройной клик на А - аналог повторного нажатия на цифру текущего режима.
8. Тройной клик на В - аналог 4/6-кратного нажатия "Ок"
Функция ДопКанал (ДК). Позволяет в дополнение к адреске подцепить обычную RGB ленту любой длинны (или прожектор например).
А - всё тоже самое, что и на первой кнопке,
В - тоже что и третья кнопка (стробоскоп),
С - "Авто" подстраивается под происходящее на адреске. Если на адреске стробоскоп - то и на ДопКанале стробоскоп, если на адреске зеленый цвет - то и на ДК зеленый цвет, если на адреске плавный огонь - то и ДК переливается в этих же оттенках и тд. Пока "Авто" не оптимизирована под все эффекты.
D - отключен.
Хз кому всё это нужно, но на мой взгляд прикольно. Можно зафигачить по периметру всей комнаты RGB, а допустим над окном адреску. Использовать как обычный свет/подсветку в обычной жизни, а в режиме вечеринки всё это дело будет вызывать эпилепсию. Либо при сборке какой-то переносной конструкции можно будет интересней обыграть проект. Либо использовать ДК вместо "яркость негорящих".

В общем у меня был чисто спортивный интерес к реализации.

Варианты подключения:
На контакты 9-11 через RGB Amplifier китайский или самодельный. Подробно об RGB лентах ТУТ. Поставить в настройках "SUB_CHAN". Так же в настройках можно указать общий катод или анод. При этом индикация на диодах самовыпилится.
Подцепить к последнему пикселу адрески еще один дополнительный адресный чип. И далее уже к нему подпаять RGB Amplifier.

Добыть этот чип можно разными способами:

1 - Купить адресную гирлянду на 50 пикселов ТАКУЮ. Отрезать последний пиксел. Расковырять. Припаять RGB Amplifier вместо/параллельно диоду. Оставшуюся гирлянду использовать по назначению. (я именно так и тестировал).

2 - Купить минимальный отрезок устаревшей WS2811 у которой диоды объединены в группы по три. Отрезать одну такую группу. Припаять RGB Amplifier вместо/параллельно диоду. (планирую испытать, но проблем быть не должно).

3 - Умудриться купить чип отдельно (и тогда поделиться информацией где). Я находил только пачкой в 500 штук.

В настройках "SUB_LEDS" указать количество дополнительных пикселов от 1 до много. Поясняю:

У вас есть 100 пикселов адрески. И вы решили прицепить еще один пиксел с припаянным RGB Amplifier. Значит нужно оставить в основных "NUM_LEDS" 100, а в "SUB_LEDS" указать "1"

У вас есть 100 пикселов адрески. И еще остался обрезок на 20 пикселов и вы решили просто посмотреть как это вообще будет работать и надо ли оно. Цепляете этот обрезок в конец своей ленты. В "NUM_LEDS" оставить 100, а в "SUB_LEDS" указать "20"

Самые умные и ленивые уже поняли, что если впадлу суеиться, но интересно протестировать можно сделать так: В "NUM_LEDS" указать допустим 70, а в "SUB_LEDS" указать "30".
Свой пульт с большим количеством кнопок. Рекомендуется.
Необходимо забиндить дополнительные кнопки пульта на переключение Режимов и Подрежимов ДК.

Пульт WAGWAT. Не рекомендуется.
Два раза нажать "ОК"

Активируется режим настройки ДК. Первые 4 диода горят синим.

Цифры на пульте: 1 - Первый Режим, 2 - Авто, 3 - Стробоскоп, 4 - Выкл.
Кнопки */#: переключают Подрежимы, но не адрески, а ДК.

Нажать "ОК" что бы выйти из режима настроек ДК.

Умные задаются вопросом, а как же теперь с 4-кратным нажатием. Да, теперь при активации ДК оно стало 6-кратным.

У меня не работает. Что делать?
Очень жаль. Не знаю.

Не ну правда?
Правда не знаю.

Ардуина вообще работает? Накатите тестовый скетч «блинк» и проверьте. (в приложении)
Лента вообще работает? Накатите тестовый скетч для ленты и проверьте. (в приложении)
Пульт вообще работает? Накатите тестовый скетч для пульта и проверьте. (в приложении)
Микрофон вообще работает? Накатите любой тестовый скетч для микрофона и проверьте. Тестовые скетчи искать в интернетах, кто первый найдет и оптимизирует (под наши пины) весь комплект - присылайте, прикреплю (часть я уже сделал).

Если что-то из этого не работает по отдельности, то не нужно пытаться запустить всё в сборе и надеяться, что оно само починится. Не починится, разберитесь сначала со своими «железками». Не нужно сразу всё паять, собирайте на макетке иначе вообще никогда не поймете в чем проблема.

Если по отдельности всё работает (на тех же пинах, что и в схеме), значит хоть что-то и с прошивкой должно работать. Напишите конкретно какие режимы не работают или работают неправильно, какая версия прошивки, какая схема (что конкретно и к каким пинам подключено) и при каких настройках.


Хочу как на схеме, микрофон + стереовход!
Делай как на схеме, и настройку «MONO_STEREO» меняй на «0».

Хочу только микрофон!
Ставь только микрофон (как на схеме), и настройку «MONO_STEREO» меняй на «1».

Хочу только линейный стереовход!
Ставь только линейный вход (как на схеме), и настройку «MONO_STEREO» меняй на «2».

Хочу только линейный моновход!
Ставь линейный вход на пин для микрофона, и настройку «MONO_STEREO» меняй на «1».

Хочу три микрофона, один линейный моновход и два дополнительных стереовхода, но я уже всё припаял на первые попавшиеся пины!
Переписывай прошивку. Очень многое прокомментировано. Переназначить пины – элементарно если потратить 10 минут и разобраться.

Как мне откалибровать шум?
1. Включить нужный вход (MIC или LINE) - нажимать "0" в режиме настроек "ОК". Микрофон и линейный калибруются независимо друг от друга!
2. Включить нужный эффект 4-7 (частоты) или 8-9 (уровни). Эти две группы калибруются независимо друг от друга!
3. Нажать 4 раза "ОК"
4. НО!!! Если имеется переменный резистор (крутилка), то повторяйте пункт "3" в разных положениях резистора. По центру, в крайнем правом, в крайнем левом и т.д. Ищите оптимальное положение! Затем уже ПОСЛЕ калибровки ОПЯТЬ можно немного покрутить. Экспериментируйте.


У меня не очень хорошо работает реакция на звук и особенно на частоты.
У меня тоже, а особенно реакция на частоты. Но если все собрать даже на макетке, поставить прошивку, сбросить настройки и откалибровать шум – то худо-бедно работать должно, а дальше уже играться с настройками чувствительности и крутить резистор подгоняя под свою систему. На форуме есть разные решения. А я потихоньку буду ковырять код и сообщать об успехах.
Вот одно из решений.
Итак, первая партия тестовых скетчей. 3 штуки.
Первый - обычный "Blink", для проверки самой платы. Просто мигает встроенным светодиодом раз в секунду. Если у Вас даже это не работает, то стоит призадуматься.
Второй - проверка ленты и питания. Указываем количество светодиодов и лимит по току (если надо). Запускается простенькая анимация Радуги. Через пять секунд включается стробоскоп с довольно "агрессивными" настройками и через 5 секунд опять Радуга. Так до бесконечности.
Если первые 5 секунд всё работает нормально, а потом плата зависает на стробоскопе - я Вас поздравляю, что-то с питанием. На "вспышке" оно сильно проседает и плата зависает. Меняйте блок питания, меняйте провода на более толстые, ставьте конденсаторы, уменьшайте лимит по току в настройках и т.д.
Третий - проверка пульта. Накатываем скетч, открываем монитор порта (выставляем 9600). Жмакаем кнопочки. Названия кнопочек ("Звездочка", "Решетка" и т.д.) выводятся в порт. Помимо этого выводится еще код кнопки. Если кнопка не распознана, то выведет код кнопки и напишет "Нипанятна!". Если ничего этого не происходит - делаем очевидный вывод.

П.С. при тестировании Третьего скетча выяснилась интересная особенность и причина одного "бага". Пульт WAVGAT - редкостное говно.
При нажатии на одну и ту же кнопку может выдать сразу два-три кода (основной и паразитные). С первого раза может вообще не распознаться код. Если зажать кнопку и не отпускать - не распознается. В общем в том числе и поэтому ЦМ с первого нажатия далеко не всегда срабатывает.
П.П.С первый попавшийся пульт от телека отрабатывает как положено и таких глюков не имеет. Стабильно выдает один и тот же код на одну кнопку.

Скетч для проверки/настройки звука будет позже, там сложнее.
  • Дальнейшая оптимизация - теперь поддержка до 300 диодов. Благодарность за тестирование и наводку Aleksandr1612
  • Добавлена возможность изменять ориентацию режимов "Шкала громкости" и "Огонь" - от центра/к центру.
  • Эффекты на "Пёрлине" (Плавный огонь, Облака, Плазма и тд.) теперь реагируют на звук. Каждый немного по своему. Если 3 секунды звука нет, то они возвращаются к своему обычному состоянию.
  • Теперь прошивка совместима со схемой от tehnotraher и OlegAnadyr, в прошивку добавлена соответствующая настройка (протестировать возможности нет, буду рад отзывам)
  • Добавлена настройка отключения индикации на ленте и на диодах
  • Добавлена настройка отключения LINE
  • Добавил несколько цветовых эффектов - ничего особо примечательного, просто для массовки
  • Настройка яркости теперь реализована "правильно" и распространяется на все эффекты
  • Оптимизация - переназначил половину переменных, констант и дефайнов. Оптимизировал функции, дописал новые и тд.
  • Еще глубже оптимизирована структура кода (занятной памяти и строк в коде становится меньше, а функционал растёт), исправлены ошибки/баги. Добавлены комментарии.
  • Исправлено отключение MIC и LINE если используется что-то одно (настройка в прошивке - "MONO_STEREO").
  • Исправлена работа пульта (индикация и сохранение настроек теперь работает правильно).
  • Добавлена возможность переключения MIC/LINE с пульта для схемы без тумблера (в режиме настроек "ОК" нажать кнопку "0").
  • Добавлена возможность выбора цвета стробоскопа (повторное нажатие "3" меняет режимы белый/цветной, */# - выбор цвета).
  • Цветомузыка 3/5 полос теперь на одной кнопке - "6" (повторное нажатие "6" - выбор 3/5 полос, */# - перебор всех возможных комбинаций).
  • Анализатор спектра уехал на кнопку "7", а на "8" теперь с подачи tehnotraher и при его участии новый режим в тестовом варианте. (В зависимости от громкости с разной скоростью вылетают огоньки с краю/центра).
  • Исправлена досадная ошибка с фигурными скобками, о которой много раз отвечал в личке и на форуме.
  • Выпилил выбор схемы. Теперь одна простая универсальная модульная схема (во вложении). Не нужны диоды? Не паяем и отключаем в настройках (INDICATE_ LED 0). То же самое с кнопками (BUTTONS 0), микрофоном и аудиовходом. Микрофон питается напрямую от пина (по потреблению там всё ок), кому надо тот сам разберется куда вставить транзистор или вообще запитать на постоянный +. Не забываем про конденсаторы на питание, чем жирнее – тем лучше. Ну и подсказка: даже если используете один вход можно поставить в настройках два и тогда при переключении просто будет отключаться реакция на звук, мало ли может пригодится кому-то.
  • На кнопке «8» добавлены режимы и настройки. Повторное нажатие «8» - переключает способ «раскрашивания»: радуга/рандом/пара близких цветов. */# - перебор режимов, кнопки «верх/низ» - насыщенность, «лево/право» - цвет пары цветов.
  • Добавлена индикация на ленте режима MIC (первые 4 диода – зеленые), LINE (красные). Для переключения между MIC и LINE – нажать «ОК», а затем «0».
  • Почистил баги, добавил новые. Написал кучу комментариев и тд.
  • Исправил режим 8.2. Ломался если было больше 200 пикселей.
  • Добавил настройку отключения имитации стерео для режима «Уровень громкости». Теперь за это отвечает настройка: «PSEUDO», 1 – включено, 0 – отключено.
  • Добавил функцию отслеживания «тишины» и автоматического включения подсветки спустя n секунд. В настройках: «SILENCE», 1 – включено, 0 – отключено. «SILENCE_TIME» - через какое время включать подсветку.
Работает так:
1. Выбираешь подсветку какая больше нравится (из 1 или 2 режима) настраиваешь по душе.
2. Потом если нужна "цветомузыка", переключаешь на нужный режим пусть будет 9 (Уровни)
3. Если музыка не звучит более 3 секунд (можно настроить), то устройство переходит в режим, который был настроен в пункте 1.
4. Как только появляется звук, то переключается обратно в режим из пункта 2
и так далее до бесконечности.
  • Добавил настройку, отвечающую за «плотность ленты» (количество светодиодов на метр). Настройка: «STRIPE_DENSE», 1 – низкая плотность (30 диодов на метр), 2 – средняя плотность (60-90 диодов), 3 – высокая плотность (144 диода). Пока не очень оптимально, нужна обратная связь, пробуйте разные варианты – говорите, что подкрутить. В предыдущих прошивках настройки режимов соответствуют «низкой плотности».
  • Поправил режим 5 «Бегущие частоты», теперь приоритет на «высокие» (как в оригинале) и не должно заливать всё красным.
  • Опять «покрутил» режим «8», вроде немного получше стало, но еще не идеально.
  • Улучшил баги, добавил ошибки…
  • Выпилил и переписал кучу кода, отвечающего за "Уровни". Поправил баг с оранжевым на концах. За одно добавил туда палитру "Океан".
  • Обновил библиотеку FastLed. Не забудьте скачать новый архив с библиотеками.
  • Настройки подсветки "Тишины" теперь сохраняются 4-кратным нажатием "Ок"
  • Сделал возможным работу на малом количестве диодов (проверял на 10)
  • Добавил падающие точки в "Уровни", спасибо Fantazm. Отключаются через параметр "PEAKS". За одно добавил туда несколько стандартных палитр из библиотеки.
  • Добавил подрежим "Демо" на каждой "цифре". Если его включить, то все эффекты этой кнопки меняются по кругу через каждые 15 секунд (параметр "TOOGGLE_TIME"). Просто #/* листаем до него.
  • Много изменений под капотом, но это всё равно никому не интересно)
  • Изменен алгоритм для обработки уровней. Старый код вырезан вместо него используется код из библиотеки Гайвера.
  • Добавлено новое "полноценное" управление на 2 кнопках. И заменена кнопочная библиотека. Включение: настройка "BUTTONS".
  • Добавлена функция ДопКанал (ДК). Позволяет в дополнение к адреске подцепить обычную RGB ленту любой длинны (или прожектор например).
  • Полностью переписано хранение/сохранение настроек. Теперь для каждого эффекта свои уникальные настройки.
  • Добавлены настройки запуска системы после отключения питания.
  • Все настройки на первой страницы перегруппированы и разбиты на блоки для удобства.
14.03.2022 v3.1:
  • Исправлено огромное количество багов.
  • Добавлено более гармоничное управление пультами с большим количеством кнопок.
  • Переписан "Стробоскоп". Вырезана плавность старта и затухания. Добавлен двухцветный Подрежим.
1. Расширить функционал ДК:
  • оптимизировать режим "Авто" под все эффекты.
  • добавить "реакцию на звук".
  • добавить новых "комбо" режимов с изначально продуманной совместной работой ДК и Адрески.
2. Добавить поддержку 7-сегментного индикатора совместно с SeGAD.
3. Использовать библиотеку MicroLed.
4. Улучшить обработку звука.
Скачать: прошивка, библиотеки, тестовые скетчи.
Шпаргалка для пульта тут, не забудьте поставить лайк энтузиасту.

П.С. большая благодарность всем кто отписывает на форуме, это сильно помогает и вдохновляет.
1616446492224.pngaaf83d60-ac6c-415d-a03e-62069d61db0f.jpg
 

Вложения

Изменено:

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
191
108
Пожалуйста скажите ещё по переменный резистор, нашел нано м собрал по схеме, при обороте резистор что то должно меняться? И можно ли без него?
Если с микрофоном, то даже лучше без него. Но в скетче надо выставить параметр:
#define POTENT 0 // 1 - используем потенциометр, 0 - используется внутренний источник опорного напряжения 1.1 В
 

Diman

★★✩✩✩✩✩
20 Апр 2019
312
72
@Tomat-91, Можно без резистора. Он всего лишь открывает путь к возможностям гибкой настройки чувствительности АЦП применительно к имеющемуся уровню сигнала.
 
  • Лойс +1
Реакции: free-spirit-

novvel

★★★✩✩✩✩
29 Сен 2018
568
192
@Tomat-91, подтвержу, что в схеме с микрофоном он бесполезен, как уже выше написали.
 

Tomat-91

✩✩✩✩✩✩✩
7 Дек 2020
11
1
Мужики простите меня за вопросы)) не реагирует на пульт, хотя на прошивке гайвера- пульт работает как нужно, включил колибровку в порт шлет
"⸮⸮⸮x⸮⸮⸮⸮⸮".
залил тот-же скетч в нано- отрабатывает пульт как надо
 
Изменено:

novvel

★★★✩✩✩✩
29 Сен 2018
568
192
Ну тут уже проблема есть с прописыванием своих кодов, в порт очень часто мусор шлет, а раз у тя каракули, то попробуй скорость порта поменять.
 

Slenk

★★★★★★✩
21 Янв 2020
382
591
34
Краснодар
Мужики простите меня за вопросы)) не реагирует на пульт, хотя на прошивке гайвера- пульт работает как нужно, включил колибровку в порт шлет
"⸮⸮⸮x⸮⸮⸮⸮⸮"
Пульт WAVGAT?
Тестовый скетч для пульта (в шапке) ставили? Что говорит?

П.С. спасибо сообществу, что отвечаете на вопросы раньше, чем я) Завал на работе...
 

Tomat-91

✩✩✩✩✩✩✩
7 Дек 2020
11
1
@Slenk @novvel пульт wavagat, на нано- отрабатывает на мини нет один и тотже скетч.
Тестовый скетч показывает кракозябры, скорость менял - меняется количество символов но все также не код.
если в мини пронумерован порт - 2 то и впрошивке ставлю 2?))
 
Изменено:

Slenk

★★★★★★✩
21 Янв 2020
382
591
34
Краснодар
@Tomat-91, а пин какой в мини? Там с пультом не всё так просто, библиотека завязана на прерываниях и по идее не на каждом пине будет работать.
 

Diman

★★✩✩✩✩✩
20 Апр 2019
312
72
Поменяй приёмники для проверки. Может он на другую частоту.
 

d-nexx

✩✩✩✩✩✩✩
19 Фев 2021
12
0
@Slenk, помоги с прошивкой или где, я не пойму. Стоит твоя прошивка 2.7, задействованы D12 через резистор, D2 на ИК пульт Wagvat, далее GND через резистор на 47 кОм, А6 через 103 конденсатор и А5 припаяны к конденсатору 22 мкФ и припаяны в OUT на микрофоне. БП на 3А, запускал тест - силы тока хватает. Проблема заключается вот в чем: при запуске режимов с 4 по 7 режим через 2-3 секунды сбрасывает на 1 режим (белый) реакции никакой нет. Припаивал резистор на 10 кОм, паял другой микрофон - все тоже самое. В чем может быть проблема? На гайверовской 2.10 тоже микрофон не считывал (но резисторы не пробовал тогда ставить)
 

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
191
108
Проблема заключается вот в чем: при запуске режимов с 4 по 7 режим через 2-3 секунды сбрасывает на 1 режим (белый)
Так происходит если нет сигнала от микрофона.
Шумы калибровали?
Пины в прошивке правильно указаны?
Проверьте эти строки в скетче
Для микрофона:
#define MONO_STEREO 1 // 0 - Моно+Стерео, 1 - Моно (микрофон или одноканальный линейный вместо микрофона), 2 - Стерео (двухканальный линейный)
Пины:
#define SOUND_R_MIC A5 // МИИКРОФОННЫЙ пин вход аудио, правый канал
#define SOUND_R_MIC_FREQ A6 // МИИКРОФОННЫЙ пин вход аудио для режима с частотами (через кондер)
Проверьте на своей схеме то, что я обвел.
П,С, Плюс микрофона припаяйте на +5в
 

Вложения

d-nexx

✩✩✩✩✩✩✩
19 Фев 2021
12
0
Так происходит если нет сигнала от микрофона.
Шумы калибровали?
Все именно так и стоит в прошивке и на пинам. Единственное, у меня в микрофоне только OUT VCC GND пины, после кондера через резистор на GND в Адруино припаяно. Шумы пытался калибровать, но реакции никакой и настройки сбрасывал и перепрошивал. Ну и питание у меня не с конца ленты, а параллельно - Ардуино и далее в ленту.
 

wadimsuv

★★★✩✩✩✩
17 Ноя 2020
191
108
Все именно так и стоит в прошивке и на пинам. Единственное, у меня в микрофоне только OUT VCC GND пины, после кондера через резистор на GND в Адруино припаяно. Шумы пытался калибровать, но реакции никакой и настройки сбрасывал и перепрошивал. Ну и питание у меня не с конца ленты, а параллельно - Ардуино и далее в ленту.
Попробуйте сделать строго вот по этой схеме. На микрофоне соедините "Vcc" и "Gain" как на схеме. Конденсатор на 10мКф. Сопротивление 47кОм +-
Если не получится, то попробуйте перепаять микрофон на А2 и кондер на А3, при этом не забыв это в скетче указать. Питание микрофона подайте с ноги 5в
Ну а если и это не поможет, то вероятно не исправен микрофон.
П,С, Посмотрите все ли детали на плате микрофона на месте. У меня был один бракованный без кондерчика маленького.
 

Вложения

Изменено:
  • Лойс +1
Реакции: mvv

Diman

★★✩✩✩✩✩
20 Апр 2019
312
72
@d-nexx, Разница в наличии АРУ у MAX9814, что для тестов не критично. Диапазон выходного сигнала у MAX4466 должен быть выше (настраивается). Для тестирования лучше подходит MAX4466, но его легко спалить при такой неправильной схеме подключения. Нужно заменить конденсаторы в линиях сигналов на резисторы 10кОм, замерить пост. напряжение на выходе MAX4466 и настроить пороговое чтобы оно превышало это значение в 2 раза.
 
Изменено:

RocketRaccon

✩✩✩✩✩✩✩
23 Дек 2020
18
0
Глобальные переменные используют 1828 байт (89%) динамической памяти, оставляя 220 байт для локальных переменных. Максимум: 2048 байт.
Недостаточно памяти, программа может работать нестабильно.
Интересно, по чему пишет подобное при компиляции ColorMusic_Fire_Edition_v2.7? :rolleyes:
 

novvel

★★★✩✩✩✩
29 Сен 2018
568
192
Это везде пишет, где много памяти используется.
 

d-nexx

✩✩✩✩✩✩✩
19 Фев 2021
12
0
@wadimsuv, сделал все в точь по схеме, купил новый max9814. Все равно на 4 режиме сбрасывает на 1. Микрофон не считывает
 

d-nexx

✩✩✩✩✩✩✩
19 Фев 2021
12
0
@novvel,
// --------------------------- НАСТРОЙКИ ---------------------------
#define KEEP_SETTINGS 1 // Хранить ВСЕ настройки в памяти
#define SETTINGS_LOG 0 // Вывод всех настроек из EEPROM в порт при запуске (для отладки)
#define REMOTE_LOG 0 // Настройка своего пульта - вывод всех "Пойманных" кнопок в порт
#define MONO_STEREO 1 // 0 - Моно+Стерео, 1 - Моно (микрофон или одноканальный линейный вместо микрофона), 2 - Стерео (двухканальный линейный)

#define INDICATE_STR 1 // Индикация на ленте. 1 - включено, 0 - выключено
#define INDICATE_LED 0 // Индикация на диодах. 1 - включено, 0 - выключено
#define BUTTONS 0 // Физические кнопки. 1 - включены, 0 - отключены
#define SILENCE 1 // Отслеживание тишины (включение подсветки после n секунд тишины)
#define SILENCE_TIME 3000 // Время тишины (в миллисекундах)

// Лента
#define STRIPE_DENSE 2 // 1 - низкая плотность, 2 - средняя плотность, 3 - высокая плотность
#define STRIPE_SPLIT 0 // 0 - цельная лента, 1 - разделена на два отрезка
#define NUM_LEDS 120 // Количество светодиодов (если 5 метров по 60, то 300)
#define CURRENT_LIMIT 3000 // Лимит по току в МИЛЛИАМПЕРАХ, автоматически управляет яркостью (пожалей свой блок питания!) 0 - выключить лимит
#define CORRECTION 0xFFB0D0 // Корректировка оттенка (чтобы белый был БЕЛЫМ). Ниже есть стандартные варианты, я подгонял вручную под свою ленту.
/* Типовые значения: TypicalSMD5050 = 0xFFB0F
Typical8mmPixel = 0xFFE08C
TypicalLEDStrip = 0xFFB0F0 - стоял этот, но на мой взгляд он "синит"
TypicalPixelString = 0xFFE08C
UncorrectedColor = 0xFFFFFF */

// Пины
#define SOUND_L_LINE A1 // ЛИНЕЙНЫЙ пин вход аудио, левый канал
#define SOUND_R_LINE A2 // ЛИНЕЙНЫЙ пин вход аудио, правый канал
#define SOUND_R_LINE_FREQ A3 // ЛИНЕЙНЫЙ пин вход аудио для режима с частотами (через кондер)
#define SOUND_R_MIC A5 // МИИКРОФОННЫЙ пин вход аудио, правый канал
#define SOUND_R_MIC_FREQ A6 // МИИКРОФОННЫЙ пин вход аудио для режима с частотами (через кондер)

#define LED_PIN 12 // Пин DI светодиодной ленты
#define POT_GND A0 // Пин земля для потенциометра
#define IR_PIN 2 // Пин ИК приёмника

#if (MONO_STEREO < 2) // Если используется микрофон
#define RELAYon 7 // Пин реле (отключение питания микрофона)
#endif

#if BUTTONS // Если используются физические кнопки
#define BTN_OnOff 3 // Пин кнопки On/Off (PIN --- КНОПКА --- GND)
#define BTN_RELAY 4 // Пин кнопки переключения MIC/LINE (PIN --- КНОПКА --- GND)
#include "GyverButton.h" // Подключить библиотеку для работы кнопок
GButton btn_OnOff(BTN_OnOff); // Объявить кнопку On/Off
GButton btn_RELAY(BTN_RELAY); // Объявить кнопку переключения MIC/LINE
#endif

#if INDICATE_LED // Если индикации на диодах активна
#define LED_line 8 // Пин светодиода "ЛИНЕНЫЙ ВХОД" (оранжевый)
#define LED_IR 9 // Пин светодиода IR (синий). сопротивление 100 Ом - так как он только работает на вспышки. на 220 Ом - не будет его видно.
#define LED_OFF 10 // Пин светодиода Off (красный) и пин светодиода режимов
#define LED_ON 11 // Пин светодиода ON (зеленый)
#endif

// Общие
#define MAIN_LOOP 5 // Период основного цикла отрисовки (по умолчанию 5)
#define REMOTE_STEP 16 // Шаг изменения настроек (цвет, насыщенноть, яркость и тд.) пультом. (1-2-4-8-16)
byte BRIGHTNESS = 255; // Общая яркость (0 - 255) - настраивается пультом
#define EMPTY_COLOR HUE_PURPLE // Цвет "не горящих" светодиодов. Будет чёрный, если яркость 0
byte EMPTY_BRIGHT = 40; // Яркость "не горящих" светодиодов (0 - 255) - настраивается пультом

// Сигнал
#define EXP 1.4 // Степень усиления сигнала (для более "резкой" работы) (по умолчанию 1.4)
#define POTENT 0 // 1 - используем потенциометр, 0 - используется внутренний источник опорного напряжения 1.1 В

// Нижний порог шумов
uint16_t LOW_PASS_mic = 70; // Нижний порог шумов режим VU, ручная настройка
byte SPEKTR_LOW_PASS_mic = 50; // Нижний порог шумов режим спектра, ручная настройка
uint16_t LOW_PASS_line = 10; // Нижний порог шумов режим VU, ручная настройка
byte SPEKTR_LOW_PASS_line = 40; // Нижний порог шумов режим спектра, ручная настройка
#define EEPROM_LOW_PASS 1 // Порог шумов хранится в энергонезависимой памяти (по умолч. 1)
#define LOW_PASS_ADD 13 // "Добавочная" величина к нижнему порогу, для надёжности (режим VU)
#define LOW_PASS_FREQ_ADD 3 // "Добавочная" величина к нижнему порогу, для надёжности (режим частот)

// шкала громкости
#define CMU_CENTER 1 // 0 - к центру, 1 - из центра
#define MAX_COEF 1.8 // Коэффициент громкости (максимальное равно среднему * этот коэф) (по умолчанию 1.8)
float SMOOTH = 0.5; // Коэффициент плавности анимации VU (по умолчанию 0.5)
byte RAINBOW_STEP = 5; // Шаг изменения цвета радуги в режиме "Шкала громкости - Радуга"

// режим цветомузыки
#define SMOOTH_STEP 20 // Шаг уменьшения яркости в режиме цветомузыки (чем больше, тем быстрее гаснет)
#define LOW_COLOR HUE_RED // Цвет низких частот
#define MID_COLOR HUE_GREEN // Цвет средних частот
#define HIGH_COLOR HUE_YELLOW // Цвет высоких частот
float SMOOTH_FREQ = 1.0; // Коэффициент плавности анимации частот (по умолчанию 0.8)
float MAX_COEF_FREQ_mic = 1.5; // Коэффициент порога для "вспышки" цветомузыки (по умолчанию 1.5)
float MAX_COEF_FREQ_line = 1.5; // Коэффициент порога для "вспышки" цветомузыки (по умолчанию 1.5)
float MAX_COEF_FREQ_1[3] = {0.8, 1.4, 1.7}; // Отдельные коэффициенты для впышек по частотам (по умолчанию 1.5)

// режим стробоскопа
#define STROBE_DUTY 20 // Скважность вспышек (1 - 99) - отношение времени вспышки ко времени темноты
byte STROBE_PERIOD = 14; // Период вспышек, миллисекунды
byte STROBE_SMOOTH = 200; // Скорость нарастания/угасания вспышки (0 - 255)
byte STROBE_COLOR = 0; // Цвет стробоскопа - настраивается пультом

// режим подсветки
int8_t WHITE_TEMP = 0; // Температура белого - настраивается пультом
byte LIGHT_COLOR = 0; // Начальный цвет подсветки - настраивается пультом
byte LIGHT_SAT = 255; // Начальная насыщенность подсветки - настраивается пультом
byte COLOR_SPEED = 100; // Скорость смены цветов - настраивается пультом

// режим бегущих частот
byte RUNNING_SPEED = 15; // Скорость движения - настраивается пультом

// режим анализатора спектра
#define LIGHT_SMOOTH 2 // Скорость затухания
byte HUE_START = 0; // Начальный цвет - настраивается пультом
byte HUE_STEP = 5; // Шаг цвета

// режим эффектов
byte HUE_Effect = 0; // Добавочный цвет к эффектам (0 красный, 80 зелёный, 140 молния, 190 розовый) - настраивается пультом
byte effect_delay = 20; // Задержка для эффектов - настраивается пультом
#define FIRE_CENTER 0 // Режим "Огонь" ( 0 - к центру, 1 - из центра )
#if (STRIPE_DENSE == 1)
byte new_rainbow_step = 5; // Шаг радуги (1 - 30) - настраивается пультом
#elif (STRIPE_DENSE == 2)
byte new_rainbow_step = 4; // Шаг радуги (1 - 30) - настраивается пультом
#else
byte new_rainbow_step = 3; // Шаг радуги (1 - 30) - настраивается пультом
#endif


/* Цвета для HSV
HUE_RED = 0
HUE_ORANGE = 32
HUE_YELLOW = 64
HUE_GREEN = 96
HUE_AQUA = 128
HUE_BLUE = 160
HUE_PURPLE = 192
HUE_PINK = 224 */

// -----------------------------------------------------------------

// ---------------------- КНОПКИ ПУЛЬТА WAVGAT ---------------------
#define BUTT_UP 0xF39EEBAD
#define BUTT_DOWN 0xC089F6AD
#define BUTT_LEFT 0xE25410AD
#define BUTT_RIGHT 0x14CE54AD
#define BUTT_OK 0x297C76AD
#define BUTT_1 0x4E5BA3AD
#define BUTT_2 0xE51CA6AD
#define BUTT_3 0xE207E1AD
#define BUTT_4 0x517068AD
#define BUTT_5 0x1B92DDAD
#define BUTT_6 0xAC2A56AD
#define BUTT_7 0x5484B6AD
#define BUTT_8 0xD22353AD
#define BUTT_9 0xDF3F4BAD
#define BUTT_0 0xF08A26AD
#define BUTT_STAR 0x68E456AD
#define BUTT_HASH 0x151CD6AD
// -----------------------------------------------------------------

// ------------------------------ ДЛЯ РАЗРАБОТЧИКОВ --------------------------------
const byte SPLIT_NUM_LEDS = NUM_LEDS / 2; // Колличество пикселов в половине ленты
#if (FIRE_CENTER || STRIPE_SPLIT) // Если огонь из центра или лента разделена - убрать нахлест
#define FIRE_DIFFUS 0
#define FIRE_VAL1 60
#define FIRE_VAL2 120
#else
const byte FIRE_DIFFUS = SPLIT_NUM_LEDS / 3 * 2; // Колличество пикселов накладывающихся друг на друга в рижемах "Огонь к центру", "Лёд и Пламень"
#define FIRE_VAL1 40
#define FIRE_VAL2 90
#endif

const int NUM_LEDS_PLUS = NUM_LEDS + FIRE_DIFFUS; // Расчет размера главного массива
const byte SPLIT_NUM_LEDS_PLUS = NUM_LEDS_PLUS / 2; // Половина от размера главного массива
const byte STRIPE = NUM_LEDS / 5;

#if (NUM_LEDS < 40)
const float freq_to_stripe = 1; //
#else
const float freq_to_stripe = NUM_LEDS / 40; // /2 так как симметрия, и /20 так как 20 частот
#endif

#define FHT_N 64 // Ширина спектра х2
#define LOG_OUT 1
#include <FHT.h> // Преобразование Хартли
#include <EEPROMex.h> // Подключить библиотеку для работы с памятью
#include "FastLED.h" // Подключить библиотеку для работы с лентой
CRGB leds[NUM_LEDS]; // Объявить ленту
#include "IRLremote.h" // Подключить библиотеку для работы с ИК пультом
CHashIR IRLremote; // Объявить ИК управление
uint32_t IRdata; // Переменная для ИК команд

// Градиент-палитра от зелёного к красному
DEFINE_GRADIENT_PALETTE(soundlevel_gp) {
0, 0, 255, 0, // green
100, 255, 255, 0, // yellow
150, 255, 100, 0, // orange
200, 255, 50, 0, // red
255, 255, 0, 0 // red
};
CRGBPalette16 myPal = soundlevel_gp;

#define N_PEAKS NUM_LEDS / 5
//#define nbars 15 //NUM_LEDS / 8 //15 // 120 - 15, 180 - 22
const byte nbars = NUM_LEDS / (8 * STRIPE_DENSE);
byte colorBars[nbars];

byte heat[NUM_LEDS_PLUS + 1]; // Главный массив
#define age(x) (heat[x])
#define magnitude(x) (heat[x + N_PEAKS])
#define baseColor(x) (heat[x + N_PEAKS * 2])
#define rnd(x) (heat[x + N_PEAKS * 3])


byte Rlenght, Llenght;
int RsoundLevel, RsoundLevel_f, LsoundLevel, LsoundLevel_f;
#if (SETTINGS_VOLUME)
int RsoundLevel_min, LsoundLevel_min;
#endif
float averageLevel = 50;
int maxLevel = 100;
byte hue;
unsigned long main_timer, effect_timer, silence_timer, eeprom_timer; // Таймеры
const float averK = 0.006;
byte count;
int RcurrentLevel, LcurrentLevel;
int colorMusic[3];
float colorMusic_f[3], colorMusic_aver[3];
const byte color_arr[] = {LOW_COLOR, MID_COLOR, HIGH_COLOR};
boolean colorMusicFlash[3], running_flag[3], strobeUp_flag, strobeDwn_flag, eeprom_flag;
boolean settings_mode = false, cmu3_5_mode, strobe_mode = false;
#if (MONO_STEREO == 2)
boolean line_mode = false; // true - микрофон, false - линейный
#else
boolean line_mode = true; // true - микрофон, false - линейный
#endif
byte this_mode = 1; // Режим по умолчанию
int strobe_bright = 0;
byte thisBright[3];
unsigned int light_time = STROBE_PERIOD * STROBE_DUTY / 10;
int8_t freq_strobe_mode = 3, light_mode, cmu_mode, cmu_color_mode, effect_mode, pattern, new_effect_color, x_mode = 2, last_mode;
byte freq_max;
float freq_max_f;
byte freq_f[32];
byte this_color;
byte OK_count = 0; //Счетчик нажатия клавиши ОК на пульте.
bool silence_flag = false;
volatile boolean ir_flag;

#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
//========================================================================================

// --- Объявление всех использующихся функций для более быстрой и беспроблемной компиляции (на конечный размер скетча никак не влияет)
// --- Вкладка 02 --------------------------------------------------------------------------------------------------------------------
void fullLowPass(); // Запуск автоматической настройки чувствительности
void autoLowPass(); // Автоматическая настройка чувствительности
void analyzeAudio(); // Преобразование Хартли (частоты)
void sound_level(); // Замер уровня громкости
void spektr_level(); // Обработка данных после Хартли
void VOID_FREQ(float val); // Функция ручной настройки чувствительности
void LOW_PASS(float val); // Функция ручной настройки шума
void silence();
// --- Вкладка 03 --------------------------------------------------------------------------------------------------------------------
bool timer_func (int val = effect_delay); // Таймер
void indicate (byte val = 0); // Индикация на ленте
void buttonTickLed(); // Нажатия кнопки
void butt_OK(); // Кнопка ОК
void(* resetFunc) (void) = 0; // Перезагрузка
void standby(); // Режим ожидания
void one_color_all(byte all_color = 0, byte all_sat = 0, byte all_bright = 0); // Функция делает всю ленту выбранным цветом
int smartIncr(int value, int incr_step, int mininmum, int maximum); // Функция, изменяет величину value на шаг incr в пределах minimum.. maximum
float smartIncrFloat(float value, float incr_step, float mininmum, float maximum); // Функция, изменяет величину value на шаг incr в пределах minimum.. maximum
void updateEEPROM(byte xxx = 0); // Сохренение настроек в память
void readEEPROM(byte xxx = 0); // Чтение настроек из памяти
void eepromTick(); // Проверка не пора ли сохранить настройки
#if (BUTTONS) // Если кнопки активны
void buttonTick(); // Обработка кнопок на передней панели
#endif
#if (MONO_STEREO == 0) // Если Моно+Стерео
void Relay_OnOff(); // Переключить Микрофон/Линейный
#endif
// --- Вкладка 04 --------------------------------------------------------------------------------------------------------------------
void animation(byte this_mode); // Отрисовка
// --- Вкладка 05 --------------------------------------------------------------------------------------------------------------------
void effect(); // Режим эффектов
void new_rainbow_loop(); // Плавная вращающаяся радуга
void addGlitter(byte chanceOfGlitter); // Искры
void brights_dec(); // Случайная вспышка и затухание
void random_color_pop(byte amount_points, byte flag_clear, byte min_bright); // Случайная смена цветов
void confetti(); // Конфетти
void sinelon(); // Бегающая точка с исчезающими следами
void bpm(); // Пульсирующие цветные полосы
void juggle(); // Восемь сплетающихся цветных точек
void Fire(byte Cooling, byte Sparking, byte HUE_K = 0); // Огонь к центру
void setPixelHeatColor (int Pixel, byte heatramp, byte color_a = 0); // Функция для огня к центру
void Perlin(byte MIN_SAT, byte MAX_SAT, byte MIN_BRIGHT, byte MAX_BRIGHT, byte HUE_START, char HUE_GA, byte STEP, char plus_delay); // Перлин
// --- Вкладка 06 --------------------------------------------------------------------------------------------------------------------
void new_effect(); // Режим эффектов NEW
void dance_party(int MAX_AGE); // Огоньки наперегонки
void color_bars(int MAX_AGE); // Цветные полоски
// --- Вкладка 07 --------------------------------------------------------------------------------------------------------------------
void remoteTick(); // Опрос ИК пульта

#if (STRIPE_DENSE == 1)
#include "05_Effects_1.h"
#elif (STRIPE_DENSE == 2)
#include "05_Effects_2.h"
#else
#include "05_Effects_3.h"
#endif
MVIMG_20210222_215552.jpg
MVIMG_20210222_215605.jpg
MVIMG_20210222_215619.jpg