Результат:
Вдохновение:
Источников вдохновения для этого проекта было несколько:
- Получите опыт работы с электрическими компонентами/проводкой/микроконтроллерами
- Разверните предыдущий проект, в котором я написал программу, чтобы мои периферийные устройства Razer Chroma реагировали на аудиовыход моего ПК.
- Постройте крутой предмет декора для моей квартиры
Начиная:
С самого начала я знал, что хочу использовать плату Arduino в качестве «мозга» проекта, но я не был уверен в том, как я хочу, чтобы весь проект функционировал. На мой взгляд, у меня было два пути достижения моей конечной цели:
- Имейте аудиовход линейного уровня на плате и анализируйте необработанные аудиосигналы.
- Используйте микрофон, чтобы улавливать изменения в звуке из динамика
При использовании этих подходов необходимо учитывать компромиссы. Использование прямого аудиовхода позволяет визуализации быть более последовательной и точной. Тем не менее, микрофон позволил бы использовать гораздо более простую схему и по-прежнему давать удовлетворительный результат.
В итоге я решил использовать микрофонный вход. Я купил два микрофонных датчика: 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-й светодиод является центром
- От центра соседние светодиоды загораются в зависимости от громкости музыки.
- На грустной доле светодиоды медленно гаснут
- На протяжении всей полосы присутствует эффект радужной прокрутки
Актуальный код можно найти здесь. Для самостоятельной реализации я предлагаю повозиться с константами в верхней части кода и посмотреть, как они влияют на результирующую визуализацию.