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

ВНИМАНИЕ! 25.03.2018 исправлен баг в архиве с проектом (обновлена библиотека IRemote)! Перекачайте, иначе код не компилируется!

Версии прошивки

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 режиме радугу можно остановить и пустить вспять

Крутейшая свето- цветомузыка на 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:
    В: Купил ленту, на ней контакты G, R, B, 12. Как подключить?
    О: Это не та лента, можешь выкинуть

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2018-04-04T07:33:43+00:00