ЦВЕТОМУЗЫКА НА ARDUINO

22.06.18 Добавлена новая версия 2.6.2! Добавлено сохранение состояния “включено/выключено” в энергонезависимую память. Штука опциональная, в настройках можно выключить (настройка KEEP_STATE)

15.03.2018, colorMusic_v1.1:

  • Добавлена плавность режиму цветомузыки по частотам! Настройка SMOOTH_STEP
  • Добавлен режим стробоскопа с целой кучей настроек!

16.03.2018 colorMusic_v2.0:

  • Добавлено управление с ИК пульта! Купить пульт можно по этой ссылке, цена вопроса 50р
  • 7 режим – Режим подсветки
  • 8 режим – Режим бегущих частот
  • 9 режим – Анализатор спектра (Версия 2.1)
  • У некоторых режимов появились подрежимы
  • Возможна работа БЕЗ потенциометра. Читайте ниже в инструкции по эксплуатации

18.03.2018 colorMusic_v2.2:

  • Настройки сохраняются в память (энергонезависимую)

19.03.2018 colorMusic_v2.3:

  • Улучшена производительность, почищен мусор
  • в 7 режиме радугу можно остановить и пустить вспять

08.05.2018 colorMusic_v2.4:

  • Добавлена настройка RESET_SETTINGS для сброса настроек в случае некорректной работы. Читайте ниже в FAQ

11.05.2018 ночь colorMusic_v2.5:

  • Код оптимизирован,  библиотеки FastLED и IRremote заменены на более оптимальные Adafruit_NeoPixel и IRLremote (для работы версии 2.5 и выше необходимо установить новые библиотеки из общей папки с библиотеками!)
  • ИК пульт теперь срабатывает почти в 100% случаев вместо прежних 30%
  • Поддержка максимум 410 светодиодов

11.05.2018 день colorMusic_v2.6:

  • Возвращена библиотека FastLED (как оказалось, функции FastLED работают гораздо быстрее, чем NeoPixel, а также поддерживает такое же количество светодиодов!)
  • ИК пульт всё ещё срабатывает почти в 100%, по сравнению с 30% в версиях 2.0-2.4
  • Поддержка максимум 410 светодиодов (работа может быть нестабильной)

20.05.2018 день colorMusic_v2.6.1:

  • Исправлен небольшой баг

Крутейшая свето- цветомузыка на Arduino и адресной светодиодной ленте WS2812b. Работает с лентой любой длины (до 450 светодиодов (версия 1.1), до 350 светодиодов (версия 2.0)), и может быть размещена в любом месте в квартире или автомобиле.

Режимы работы (переключаются кнопкой или с ИК пульта (версия 2.0)):

  • VU meter (столбик громкости): от зелёного к красному
  • VU meter (столбик громкости): плавно бегущая радуга
  • Светомузыка по частотам: 5 полос симметрично
  • Светомузыка по частотам: 3 полосы
  • Светомузыка по частотам: 1 полоса
  • Стробоскоп (Версия 2.0)
  • Подсветка (Версия 2.0)
    • Постоянный цвет
    • Плавная смена цвета
    • Бегущая радуга
  • Бегущие частоты (Версия 2.0)
  • Анализатор спектра (Версия 2.1)

Особенности:

  • Плавная анимация (можно настроить)
  • Автонастройка по громкости (можно настроить)
  • Фильтр нижнего шума (можно настроить)
  • Автокалибровка шума при запуске (можно настроить)
  • Поддержка стерео и моно звука (можно настроить)
  • Лента не гаснет полностью (Версия 2.0)
  • (Версия 2.1) все настройки сохраняются в памяти и не сбрасываются при перезагрузке
    • Сохранение настроек происходит при выключении кнопкой звёздочка (*)
    • А также через 30 секунд после последнего нажатия на любую кнопку ИК пульта

ПОДРОБНОЕ ВИДЕО ПО ПРОЕКТУ

канал на youtube
группа вконтакте
страничка на github

Понятные схемы, прошивки с комментариями и подробные инструкции это очень большая работа. Буду рад, если вы поддержите такой подход к созданию Ардуино проектов.

ИНСТРУКЦИИ ПО ЭКСПЛУАТАЦИИ

Потенциометр настройки опорного напряжения настраивается “методом тыка” пока не заработает (у меня стоит в середине). Подстройка нужна при смене источника аудио или изменении его потенциальной громкости.

  • Если во время работы в режиме VU метра (первые два режима) шкала всё время горит – слишком низкое опорное напряжение, Ардуино получает слишком высокий сигнал
  • Если не горит – опорное слишком высокое, системе не удаётся распознать изменение громкости с достаточной для работы точностью

МОЖНО СОБРАТЬ СХЕМУ БЕЗ ПОТЕНЦИОМЕТРА! Для этого параметру POTENT (в скетче в блоке настроек в настройках сигнала) присваиваем 0. Будет задействован внутренний опорный источник опорного напряжения 1.1 Вольт. Но он будет работать не с любой громкостью! Для корректной работы системы нужно будет подобрать громкость входящего аудио сигнала так, чтобы всё было красиво, используя предыдущие два пункта по настройке.

Настройка нижнего порога шумов является очень важной, в идеале выполняется 1 раз для любого нового источника звука или смены громкости старого. Есть 3 варианта настройки:

  • Ручная: выключаем AUTO_LOW_PASS и EEPROM_LOW_PASS (ставим около них 0), настраиваем значения LOW_PASS и SPEKTR_LOW_PASS вручную, методом тыка
  • Автонастройка при каждом запуске: включаем AUTO_LOW_PASS, выключаем EEPROM_LOW_PASS . При подаче питания музыка должна стоять на паузе! Калибровка происходит буквально за 1 секунду.
  • По кнопке: при удерживании кнопки 1 секунду настраивается нижний порог шума (музыку на паузу!)
  • Из памяти (ЛУЧШИЙ ВАРИАНТ): выключаем AUTO_LOW_PASS и включаем EEPROM_LOW_PASS
    • Включаем систему, источник звука подключен проводом
    • Ставим музыку на паузу
    • Удерживаем кнопку 1 секунду (либо кликаем кнопку 0 (ноль) на ИК пульте
    • Загорится светодиод на плате Arduino, погаснет через ~1.5 секунды
    • Значения шумов будут записаны в память и будут САМИ загружаться при последующем запуске!
Номер режима Режим Кнопки ← → Кнопки ↑ ↓ Кнопка #
1 Шкала громкости (градиент) Плавность анимации
2 Шкала громкости (радуга) Плавность анимации Скорость радуги
3 Цветомузыка (5 полос) Плавность анимации Чувствительность
4 Цветомузыка (3 полосы) Плавность анимации Чувствительность
5 Цветомузыка (1 полоса)
5,1 3 частоты Плавность анимации Чувствительность Смена подрежима
5,2 Низкие Плавность анимации Чувствительность Смена подрежима
5,3 Средние Плавность анимации Чувствительность Смена подрежима
5,4 Высокие Плавность анимации Чувствительность Смена подрежима
6 Стробоскоп Плавность вспышек Частота вспышек
7 Цветная подсветка
7,1 Постоянный Цвет Насыщенность Смена подрежима
7,2 Плавная смена цвета Скорость Насыщенность Смена подрежима
7,3 Бегущая радуга Скорость Шаг радуги Смена подрежима
8 Бегущие частоты
8,1 3 частоты Скорость Чувствительность Смена подрежима
8,2 Низкие Скорость Чувствительность Смена подрежима
8,3 Средние Скорость Чувствительность Смена подрежима
8,4 Высокие Скорость Чувствительность Смена подрежима
9 Анализатор спектра Шаг цвета Цвет
Общие настройки (перекл. ОК) Все режимы Общая яркость горящих светодиодов Яркость “не горящих” светодиодов
Остальные кнопки: цифра 0 – калибровка шума, * – вкл/выкл систему,

СХЕМЫ, ПЕЧАТНЫЕ ПЛАТЫ

Внимание! arduino подключается к источнику звука до усилителя (линейному выходу)! звук, который идёт с усилителя на колонки, может спалить плату!

Без режима частот

С частотами (3-5 режим)

С микрофоном

От источника 12В

С ИК пультом 3.5 вход

С ИК пультом мик вход

С ИК пультом 3.5

МАТЕРИАЛЫ И КОМПОНЕНТЫ

Ссылки на магазины, с которых я закупаюсь уже не один год

Вам скорее всего пригодится:

всё для пайки
аккумы, bms
arduino, модули
мультиметры
инструменты
бп и модули

ПРОШИВКА И НАСТРОЙКА

Содержимое папок в архиве

  • libraries – библиотеки проекта. Заменить имеющиеся версии
  • colorMusic – прошивка для Arduino, файл в папке открыть в Arduino IDE (инструкция)
  • colorMusic_v1.1 – прошивка для Arduino версии 1.1. Схема аналогична первой версии
  • colorMusic_v2.0 KEYES – прошивка для Arduino версии 2.0 с поддержкой ИК пульта от KEYES Studio
  • colorMusic_v2.0 WAVGAT – прошивка для Arduino версии 2.0 с поддержкой ИК пульта из магазина WAVGAT (ссылка в списке компонентов)
    • Да, версию 2.0 можно использовать без пульта
  • schemes – схемы подключения
скачать архив
страница на github

Как прошить?

  • ЕСЛИ ЭТО ПЕРВЫЙ ОПЫТ РАБОТЫ С ARDUINO – посмотреть ВИДЕО о платформе с целью ознакомления, далее скачать, установить и настроить необходимые для работы программы согласно СУПЕР ПОДРОБНОЙ ИНСТРУКЦИИ (там даже видео версия есть!).
  • Скачать архив с проектом напрямую, или с GitHub (кнопки чуть выше)
  • Установить библиотеки (папка Libraries) в
    C:\Program Files (x86)\Arduino\libraries\ (Windows x64)
    C:\Program Files\Arduino\libraries\ (Windows x86)

    Подробнее в 4-ом пункте статьи для новичков

  • Подключить Ардуино к компьютеру при помощи Data-кабеля
  • Открыть файл прошивки желаемой версии (файлы прошивок .ino лежат в одноимённых папках)
  • Настроить Arduino IDE (COM порт, куда подключена плата; подключенная модель Arduino, как в статье из первого пункта)
  • Настроить что нужно в прошивке, нажать загрузить
  • Если происходит ошибка компиляции или ошибка загрузки, читать 5-ый пункт в статье для новичков.

Дополнительно

  • FAQ:
    Большинство проблем можно решить, прочитав вот эту статью: https://alexgyver.ru/ws2812_guide/

    В: Купил ленту, на ней контакты G, R, B, 12. Как подключить?
    О: Это не та лента, можешь выкинуть

    В: Прошивка загружается, но выползает рыжими буквами ошибка “Pragma message….”
    О: Это не ошибка, а информация о версии библиотеки

    В: Что делать, чтобы подключить ленту своей длины?
    О: Посчитать количество светодиодов, перед загрузкой прошивки изменить самую первую в скетче настройку NUM_LEDS (по умолчанию стоит 120, заменить на своё). Да, просто заменить и всё!!!

    В: Сколько светодиодов поддерживает система?
    О: Версия 1.1: максимум 450 штук, версия 2.0: 350 штук

    В: Как увеличить это количество?
    О: Варианта два: оптимизировать код, взять другую библиотеку для ленты (но придётся переписать часть). Либо взять Arduino MEGA, у неё больше памяти.

    В: Какой конденсатор ставить на питание ленты?
    О: Электролитический. Напряжение 6.3 Вольт минимум (можно больше, но сам кондер будет крупнее). Ёмкость – минимум 1000 мкФ, а так чем больше тем лучше.

    В: Как проверить ленту без Arduino? Горит ли лента без Arduino?
    О: Адресная лента управляется по спец протоколу и работает ТОЛЬКО при подключении к драйверу (микроконтроллеру)

  • МОЖНО СОБРАТЬ СХЕМУ БЕЗ ПОТЕНЦИОМЕТРА! Для этого параметру POTENT (в скетче в блоке настроек в настройках сигнала) присваиваем 0. Будет задействован внутренний опорный источник опорного напряжения 1.1 Вольт. Но он будет работать не с любой громкостью! Для корректной работы системы нужно будет подобрать громкость входящего аудио сигнала так, чтобы всё было красиво, используя предыдущие два пункта по настройке.

  • Версию 2.0 и выше можно использовать БЕЗ ИК ПУЛЬТА, режимы переключаются кнопкой, всё остальное настраивается вручную перед загрузкой прошивки.

  • Как настроить другой пульт?
    У других пультов кнопки имеют другой код, для определения кода кнопок используйте скетч IR_test (версии 2.0-2.4) или IRtest_2.0 (для версий 2.5+), есть в архиве проекта. Скетч шлёт в монитор порта коды нажатых кнопок. Далее в основном скетче в секции для разработчиков есть блок дефайнов для кнопок пульта, просто измените коды на свои. Можно сделать калибровку пульта, но честно уже совсем лень.

  • Как сделать два столбика громкости по каналам?
    Для этого вовсе необязательно переписывать прошивку, достаточно разрезать длинный кусок ленты на два коротких и восстановить нарушенные электрические связи тремя проводами (GND, 5V, DO-DI). Лента продолжит работать, как одно целое, но теперь у вас есть два куска. Само собой, аудио-штекер должен быть подключен тремя проводами, а в настройках отключен моно режим (MONO 0), а количество светодиодов должно быть равно суммарному количеству на двух отрезках.

  • Как сбросить настройки, которые хранятся в памяти?
    Если вы доигрались с настройками и что то пошло не так, можно сбросить настройки на “заводские”.  Начиная с версии 2.4 есть настройка RESET_SETTINGS, ставите её 1, прошиваетесь, ставите 0 и снова прошиваетесь. В память будут записаны настройки из скетча. Если вы на 2.3, то смело обновляйте до 2.4, версии отличаются только новой настройкой, которая никак не повлияет на работу системы.

АЛГОРИТМ РАБОТЫ

Режим громкости

  • Делается 100 измерений напряжения на АЦП
  • Ищется максимальное
  • Фильтруется по нижнему порогу шумов
  • Возводится в степень для большей “резкости” анимации
  • Фильтруется “бегущим средним”
  • Ищется “средняя” громкость за несколько секунд (тоже бегущее среднее, но очень медленное)
  • Ищем “максимальную громкость шкалы”, как среднюю * некоторый коэффициент
  • Преобразуем сигнал в количество горящих светодиодов
  • Включаются светодиоды согласно режиму отрисовки

Режим цветомузыки:

  • Преобразование Хартли (разбивка на спектр частот)
  • Фильтрация по нижнему порогу шумов
  • Поиск максимального значения в трёх диапазонах (низкие, средние, высокие)
  • Расчёт “средней громкости” (медленное бегущее среднее)
  • Если текущий сигнал больше среднего * коэффициент – включаем светодиоды
  • Итого имеем массив colorMusicFlash, в котором три ячейки 1 или 0, вкл или выкл
  • Включаем отрезки светодиодов согласно массиву

2018-08-03T12:01:46+00:00