Цветомузыка на Arduino, Светодиодный проект на WS2812b. Цветомузыка на arduino Скачать скетч для светодиодной светомузыки




Изучал я как-то создание плагинов визуализации для медиаплееров, и тут мой взор упал на сборку светодиодов, которые я подключал к Arduino для проверки состояния выводов при тестировании различных скетчей. А почему бы не сделать аппаратную визуализацию музыки? Так я решил сделать простенькую цветомузыку.

С Википедии:
Цветомузыкой называют электронное устройство для построения световых картин, формирования цветовых зрительных образов, сопоставленных с музыкальным сопровождением.

Что нам потребуется:

  • Arduino
  • Ethernet Shield
  • Светодиоды — 10 шт.
  • Резисторы 470 Ом — 10 шт.
  • Макетная плата или что-либо, на чём будете крепить светодиоды.

Схема соединения очень простая. С ней справится даже первоклассник. Светодиоды через резисторы подключаются на цифровые выводы с 0 по 9.


Вот так это поначалу выглядело у меня:


Теперь прошиваем в ардуину следующий скетч:

#include // needed for Arduino versions later than 0018 #include #include // UDP library from: [email protected] 12/30/2008 byte mac = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte ip = { 192,168,1,177 }; //IP ардуины unsigned int localPort = 53412; // локальный порт byte remoteIp; unsigned int remotePort; // буфер для приёма/отправки данных char packetBuffer; //буфер для получения данных по сети void setup() { Ethernet.begin(mac,ip); Udp.begin(localPort); for (int i=0; i<10; i++) { pinMode(i,OUTPUT); digitalWrite(i, LOW); } } void loop() { // читаем пакеты данных при наличии int packetSize = Udp.available(); if(packetSize) { memset(packetBuffer, 0, sizeof(packetBuffer)); //обнуляем буфер packetSize = packetSize - 8; // subtract the 8 byte header Udp.readPacket(packetBuffer,UDP_TX_PACKET_MAX_SIZE, remoteIp, remotePort); for (int i=0; i<10; i++) { if (packetBuffer[i]=="1") { digitalWrite(i,HIGH); } else { digitalWrite(i,LOW); } } } //if(packetSize) }
Всё, что он делает, это получает по протоколу UDP строку из десяти нулей и единиц и соответствующим образом зажигает светодиоды.
При необходимости меняем переменные ip и localPort.

Теперь подключаем плагин к Winamp или AIMP (необходимо скопировать DLL-файл в папку плагинов программы) и настраиваем его. Устанавливаем IP, порт (такие как в скетче) и выбираем режим визуализации. Ethernet Shield и компьютер соединяем по локальной сети.


Для открытия настроек плагина в AIMP щёлкните по чёрному полю визуализации.
В результате у меня получилась вот такая цветомузыка. На втором видео я всё разместил в небольшой коробочке, туда же воткнул и LCD-дисплей (о его подключении к этой же ардуине и использовании я расскажу в другой раз, как допишу программу управления). Сверху светодиоды накрыл пластиковыми баночками из под фотоплёнки.


Также прикладываю исходники плагинов.

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

  • В: Купил ленту, на ней контакты 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), а количество светодиодов должно быть равно суммарному количеству на двух отрезках.
    P.S. Посмотри первую схему в схемах!

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

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

Чего только самобытные мастера не придумают. От трехцветных моргалок до лазерных многолучевых установок с управлением по MIDI интерфейсу.

Как большой поклонник, так называемых адресных светодиодов, хочу показать вам очень простую и удивительную цветомузыку. Я вообще такой ни разу не видел. Пока не собрал за один вечер. Итак, визуализатор звука!

Инструкция

Схема очень простая!


Вам понадобятся Arduino Nano, или Uno. Или какая там у вас есть? Два потенциометра, пять резисторов, пару конденсаторов и линейка (лента) из 180 светодиодов WS2812b. Всё! Светодиодов в линейке может быть 60, 120 или 180.

В визуализаторе с помощью алгоритма быстрого преобразования Фурье выделяются 8 частот (порог чувствительности на каждую частоту свой, снижается от 1 к 8), преобразуются в цвет и выводятся на линейку светодиодов по одному из восьми алгоритмов. Скетч писал Майкл Крампас, парни из Чип и Дипа добавили функционал, а библиотека для светодиодов и быстрого преобразования Фурье (FFT) написана в Адафрут для проекта Piccolo. Библиотека FFT для 128 точек, адаптированная для AVR микроконтроллеров написана на ассемблере.

Сам скетч и библиотеку FFT нужно скачать и .

Не теряйте время на разбор алгоритмов, просто соберите, залейте скетч и наслаждайтесь шоу.
Это всего лишь развлечение!

В момент первого включения нужно сделать пару настроек :

Яркость: удерживайте кнопку color при включении питания. На первых 8 светодиодах будет отображаться радуга светодиодов. С помощью ручки param измените яркость. По завершении нажмите кнопку color еще раз, и ваша конфигурация будет сохранена в памяти.

Длина светодиодной полосы: удерживайте кнопку pattern при включении питания. Отобразится один, два или три красных светодиода. Используйте ручку param, чтобы выбрать длину светодиодной полосы в зависимости от количества красных светодиодов:

1=60 светодиодов
2=120 светодиодов
3=180 светодиодов

По завершении нажмите кнопку pattern еще раз, и ваша конфигурация будет сохранена в памяти.

Алгоритмы

Танцы плюс: пики звуковых сигналов испускаются из центра полосы и исчезают по мере приближения к концам. Скорость пика пропорциональна величине звукового сигнала этого пика.

Танцы минус: то же, что и Dance Party, но пики сигналов испускаются с одного конца.
Импульс: пики сигналов отображаются как яркие импульсы, которые поступают из центра полосы. Ширина импульса зависит от уровня сигнала.

Световая полоса: в пиках освещается вся полоса.

Цветные полоски: пики сигналов отображаются как цветные полосы, которые исчезают.

Цветные полоски 2: подобно цветные полоски, но каждая полоска сжимается и исчезает.

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

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

Цветовые схемы

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

Радуга: все пики сигналов отображаются как один и тот же цвет (с небольшим количеством случайных вариаций) и этот цвет меняется как радуга с течением времени. Скорость изменения цвета устанавливается потенциометром param.

Цветные частоты: в этом режиме каждый пик сигнала окрашивается в зависимости от частотной полосы где он находится. Самая низкая полоса красного цвета, и дальше вверх по спектру. Есть 8 полос частот: красный, оранжевый, желтый, зеленый, голубой, синий, фиолетовый, белый. Этот цветовой режим наиболее интересен, когда частотная характеристика настроена на все полосы частот.

Диапазон частот: вы можете управлять тем диапазоном частот, на который откликается цветомузыка. Чтобы установить диапазон нажмите и удерживайте обе кнопки. Используйте ручку param, чтобы выбрать, сколько из восьми частотных диапазонов будет показываться. Если вы хотите выделить бас и ритм музыки, установите частотную характеристику только на самые низкие 2 или 3 полосы. Если вы хотите показать все частоты в музыке (например, вокал и более высокие инструменты), выберите все полосы частот.

Это видеоинструкция по настройке и она же демонстрация визуализатора в работе. Там в конце две музыкальные композиции с разными алгоритмами.

Ещё одна композиция

Парни! И дамы конечно. Я очень хочу, чтобы вы успели сделать эту простую конструкцию к новогоднему празднику. Не пожалеете! Гости будут в шоке!

С наступающим 2018 годом!

Добавлено 15.12.2017 Эпилог или разбор полётов
1. Как изменить подсветку в паузах?
2. Можно ли изменить динамику?
3. Как подключить ленту с количеством светодиодов отличным от 60/120/180?
Плюс опубликована обновленная схема. Не волнуйтесь, добавили всего один резистор.
Осталось две недели до Нового года. Успеете собрать?

Добавлено 09.06.2018
Сделал настройки подсветки:
скетч и схема .
Пользуемся так.
Фоновая подсветка:
В паузах включается фоновая подсветка т.е вся линейка будет светится выбранным вами цветом и с выбранной яркостью.
Цвет: установите ручку потенциометра PARAM2 в среднее положение и один раз нажмите кнопку Background. Светодиодная линейка зажжется. Вращайте потенциометр PARAM2, цвет линейки будет меняться от красного до фиолетового. Выберите цвет и ещё раз нажмите кнопку Background.
Яркость: установите потенциометр в минимальное положение (ручку до упора по часовой) и нажмите кнопку Background. Линейка погаснет. Медленно вращая ручку потенциометра PARAM2 выберите требуемую яркость подсветки и ещё раз нажмите кнопку Background. Значения яркости запишется в память микроконтроллера.

С наступающим! Приближается Новый год, а значит, пора срочно создавать настроение! Ну и как всегда в это время года рождаются десятки электронных схем различных цветомузыкальных установок. Чего только самобытные мастера не придумают. От трехцветных моргалок до лазерных многолучевых установок с управлением по MIDI интерфейсу.
Чип и Дип является крупнейшим поставщиком адресных светодиодов WS2812b на российский рынок. Поэтому мы хотим показать вам очень простую и удивительную цветомузыку, которую работает на Arduino. Назовем её - визуализатор звука!

Инструкция

Схема очень простая!

Вам понадобятся Arduino Nano, или Uno. Или какая там у вас есть? Два потенциометра, пять резисторов, пару конденсаторов и линейка (лента) из светодиодов WS2812b. Всё! Светодиодов в линейке может быть 60, 120 или 180. А впрочем, любое количество.
В визуализаторе с помощью алгоритма быстрого преобразования Фурье выделяются 8 частот (порог чувствительности на каждую частоту свой, снижается от 1 к 8), преобразуются в цвет и выводятся на линейку светодиодов по одному из восьми алгоритмов. Основную часть скетча писал Майкл Крампас, парни из Чип и Дипа добавили функционал, ещё одна часть кода взята из проекта Piccolo компании Adafruit.
В Adafruit также писали библиотеку для светодиодов neopixel. А библиотека быстрого преобразования Фурье (FFT) написана уважаемым ChaN, это библиотека FFT для 128 точек, адаптированная для AVR микроконтроллеров написана на ассемблере.
Сам скетч и библиотеки ffft.h и Adafruit_NeoPixel.h нужно скачать в подвале этой страницы и распаковать в папку с другими библиотеками Arduino. Например C:\Program Files (x86)\Arduino\libraries
Не теряйте время на разбор алгоритмов, просто соберите, залейте скетч в плату Arduino и наслаждайтесь шоу.
Это всего лишь развлечение!

Настройки

В момент первого включения нужно сделать пару настроек:
Яркость: удерживайте кнопку color при включении питания. На первых 8 светодиодах будет отображаться радуга светодиодов. С помощью ручки param измените яркость. По завершении нажмите кнопку color еще раз, и ваша конфигурация будет сохранена в памяти.
Длина светодиодной полосы: удерживайте кнопку pattern при включении питания. Отобразится один, два или три красных светодиода. Используйте ручку param, чтобы выбрать длину светодиодной полосы в зависимости от количества красных светодиодов:
1=60 светодиодов
2=120 светодиодов
3=180 светодиодов
По завершении нажмите кнопку pattern еще раз, и ваша конфигурация будет сохранена в памяти.

Алгоритмы

Танцы плюс: пики звуковых сигналов испускаются из центра полосы и исчезают по мере приближения к концам. Скорость пика пропорциональна величине звукового сигнала этого пика.
Танцы минус: то же, что и Dance Party, но пики сигналов испускаются с одного конца.
Импульс : пики сигналов отображаются как яркие импульсы, которые поступают из центра полосы. Ширина импульса зависит от уровня сигнала.
Световая полоса: в пиках освещается вся полоса.
Цветные полоски: пики сигналов отображаются как цветные полосы, которые исчезают.
Цветные полоски 2: подобно цветные полоски, но каждая полоска сжимается и исчезает.
Вспышки: пики сигналов отображаются в виде светодиодной вспышки в случайном месте. Начальный цвет белый, а затем исчезает через другой цвет.
Светлячки: пики сигналов отображаются как одиночные светодиоды в случайном месте, и они перемещаются влево или вправо и исчезают. Их скорость зависит от величины сигнала.

Цветовые схемы

Случайная двухцветная схема : выбраны два случайных цвета и только они используются для отображения пиков сигнала. Со временем будут выбраны новые цвета. Используйте param, чтобы настроить скорость изменения цветовой схемы. Если ручка потенциометра «параметры» в верхнем положении, цвета будут меняться часто и каждый пик сигнала будет иметь новый цвет. Рекомендую установить ручку в средину.
Радуга : все пики сигналов отображаются как один и тот же цвет (с небольшим количеством случайных вариаций) и этот цвет меняется как радуга с течением времени. Скорость изменения цвета устанавливается потенциометром param.
Цветные частоты : в этом режиме каждый пик сигнала окрашивается в зависимости от частотной полосы где он находится. Самая низкая полоса красного цвета, и дальше вверх по спектру. Есть 8 полос частот: красный, оранжевый, желтый, зеленый, голубой, синий, фиолетовый, белый. Этот цветовой режим наиболее интересен, когда частотная характеристика настроена на все полосы частот.
Диапазон частот: вы можете управлять тем диапазоном частот, на который откликается цветомузыка. Чтобы установить диапазон нажмите и удерживайте обе кнопки. Используйте ручку param, чтобы выбрать, сколько из восьми частотных диапазонов будет показываться. Если вы хотите выделить бас и ритм музыки, установите частотную характеристику только на самые низкие 2 или 3 полосы. Если вы хотите показать все частоты в музыке (например, вокал и более высокие инструменты), выберите все полосы частот.

Это видеоинструкция по настройке и она же демонстрация визуализатора в работе.
Там, в конце, две музыкальные композиции с разными алгоритмами.

Ещё одна композиция

Эпилог или разбор полётов
1. Как изменить подсветку в паузах?
2. Можно ли изменить динамику?
3. Как подключить ленту с количеством светодиодов отличным от 60/120/180?

Это открытый проект! Лицензия, под которой он распространяется –