Результат:

Вдохновение:

Источников вдохновения для этого проекта было несколько:

  • Получите опыт работы с электрическими компонентами/проводкой/микроконтроллерами
  • Разверните предыдущий проект, в котором я написал программу, чтобы мои периферийные устройства Razer Chroma реагировали на аудиовыход моего ПК.
  • Постройте крутой предмет декора для моей квартиры

Начиная:

С самого начала я знал, что хочу использовать плату Arduino в качестве «мозга» проекта, но я не был уверен в том, как я хочу, чтобы весь проект функционировал. На мой взгляд, у меня было два пути достижения моей конечной цели:

  1. Имейте аудиовход линейного уровня на плате и анализируйте необработанные аудиосигналы.
  2. Используйте микрофон, чтобы улавливать изменения в звуке из динамика

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

В итоге я решил использовать микрофонный вход. Я купил два микрофонных датчика: ky-038 и MAX9814. В конце концов, я остановился на MAX9814, потому что он намного надежнее обнаруживал изменения в звуке.

Части:

Для создания этого проекта я купил:

  • Ардуино Уно
  • МАКС9814
  • ALITOVE 16.4ft WS2812B Светодиодная лента RGB с индивидуальной адресацией
  • ALITOVE 5V 10A Преобразователь адаптера переменного тока в постоянный

Я рассчитал свои потребности в источниках питания следующим образом: 150 светодиодов x 60 мА (максимальный ток, который может потреблять каждый светодиод) = общий потребляемый ток 9000 мА. Поэтому я решил, что для этого проекта будет достаточно блока питания на 10 ампер.

Проводка:

MAX9814 требует небольшой пайки, чтобы его можно было использовать. Поскольку у меня не было опыта пайки, я немного опасался использовать этот датчик, но мне потребовалось не более 10 минут, чтобы научиться правильно паять. Несмотря на то, что меня пугает пайка, я рад, что заставил себя научиться паять, поскольку это алхимия энтузиастов электроники.

Купленная мной светодиодная лента шла с 5 проводами — 2x5v, 2xGND, 1xData. Эти провода были сгруппированы в две группы: 1x5v, 1xGND, 1xData, которые были обжаты в разъем JST (что позволяло выполнять соединения с помощью простых соединительных кабелей), и группа питания с остальными проводами. После зачистки корпуса от силовой группы я подключил эти два провода к блоку питания.

Остальную проводку можно увидеть ниже:

Не обращайте внимания на компонент батареи на диаграмме, в блоке питания, который я использовал, нет фрицирующей части, поэтому я использовал следующий лучший вариант. Ниже вы можете найти реальную картину окончательной настройки проводки. Следует отметить, что от разъема JST я также подключил провод, соединяющий контакт заземления на Arduino.

Код:

Код для проекта был адаптирован из светодиодных ламп NerdForge Music Reactive, которые можно найти здесь. Принцип работы визуализации прост и работает следующим образом:

  • Каждый 20-й светодиод является центром
  • От центра соседние светодиоды загораются в зависимости от громкости музыки.
  • На грустной доле светодиоды медленно гаснут
  • На протяжении всей полосы присутствует эффект радужной прокрутки

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