Чего только самобытные мастера не придумают. От трехцветных моргалок до лазерных многолучевых установок с управлением по 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?
Плюс опубликована обновленная схема. Не волнуйтесь, добавили всего один резистор.
Осталось две недели до Нового года. Успеете собрать?
Комментарии (100)
alexhott
11.12.2017 19:27а у меня мечта елочку пятью метрами обмотать и запустить огоньки бегать
ABATAPA
11.12.2017 22:18Мечта… Цена реалищации такой мечты — ~1000 руб лента, 150 руб. Arduino nano, и рублей 300 на все остальное. Итого — до 1500 руб. Для мечты — копейки.
Так почему бы не идти к мечте?
turpa
12.12.2017 10:59Три года назад я обмотал елку 6 метрами, получилось прикольно но мало. Два года назад я обмотал елку 12 метрами, получилось неплохо. А год назад жена сказала «Хватит наматывать эти бинты на елку, вешаем обычную гирлянду!» :(
Дело в том, что в качестве проводов китайцы распаивают трехжильный шлейф мутно-прозрачно-белого цвета 8-10 мм шириной. По хорошему его бы заменить на что-нибудь менее заметное, темно-зеленое, желательно с более тонким сигнальным проводником, но, увы, я такого не смог найти. Так что в этом году, видимо, елку опять будет украшать самая обычная гирлянда из магазина.
Кстати, может быть кто-нибудь подскажет, плоские шлейфы где-нибудь изготовляют на заказ, чтобы можно было самостоятельно выбрать количество, цвета и сечение жил?vconst
12.12.2017 11:33Можно купить герметичную ленту и вымочить ее в зеленой краске, а потом проскрести «окошки» на месте светодиодов.
AbnormalHead
14.12.2017 23:44Закажите примерно такое.
По ws2811 находится много вариантов реализации гирлянд. Можно просто купить модулей и самому спаять необходимую гирлянду.
TxN
11.12.2017 19:30Тоже делал визуализатор, но зависящий от компьютера, и всего на десяти 5-мм светодиодных модулях (ничего лучше в ближайшем радиолабазе не нашлось), но зато каждому соорудил печатный корпус с отражателем и рассеивателем, и поставил их башенкой. Получилась скорее не цветомузыка, а своеобразная лампа, на которую приятно залипать. По-моему, получилось довольно симпатично, но довести до ума руки так и не дошли. Из достоинств — ничего, кроме ардуины и адресуемых светодиодов не надо, для не дружащих с паяльником (вроде меня) — самое то, для работы хватает питания от USB. Алгоритм самописный, на основе FFT, ничего хитрого.
Ролик:
youtu.be/Wlx0bndeyC8
Снимал на китайский тапок, в реальности выглядит более насыщенно и ярко, и разница в яркости между центром и краями не так видна.
ed007
11.12.2017 20:15Почему-то большинство разработчиков выбирает для rgb случайные цвета. Представьте музыку без нот/аккордов — будет какафония. Так и для глаз наверняка существуют особо приятные цвета.
ploop
11.12.2017 20:22Прикольно конечно, но в основном за счёт самой ленты. Алгоритм вялый, сразу видно.
VioletGiraffe
12.12.2017 10:57А мне очень понравились некоторые из визуализаций, хочу повторить, но с наскока пока не знаю, как запрограммировать. Как раз едет мне такая лента, и именно цветомузыку я и хотел сделать, но у меня на уме были существенно попроще виды визуализации, с управлением только цветом и яркостью статичных диодов, а тут всякие бегущие эффекты. С фантазией у разработчиков этих эффектов всё в порядке :)
altcms
11.12.2017 20:52Хорошая идея, но слишком поздно. Полазил по нашим магазинам, нет такой ленты в продаже, а с Китая не успеет дойти.
REPISOT
11.12.2017 21:07Если оно все равно подключается к ПК шнуром, почему бы не сделать этот шнур — USB, а всю обработку — в программу для компа? а еще лучше соединить по BT или WiFi.
tolegs Автор
11.12.2017 21:16Не подключается оно к ПК. Разве один раз для загрузки скетча. Далее всегда автономно. Поэтому может лучше использовать Arduino Mini без USB.
rocknsalt
11.12.2017 21:28прошу прощения, возможно что-то упустил. а как без пк он слышит звук?
tolegs Автор
11.12.2017 21:34Он подключается к выходам усилителя.
rocknsalt
11.12.2017 21:36ах, я просто думал на дискотеке такую поставить, тогда видимо не судьба, или через микрофон как то придумать, но наверное будут искажения
vassabi
11.12.2017 21:57вы сюда посмотрите: 20 лет тому назад он делал цветомузыку:
Отдельный и немного спорный вопрос в необходимости внешней синхронизация (например с музыкой). Мне кажется что зачастую она совершенно необязателна — значительное число людей, видевших эту мигалку под музыку, были уверены в наличии такой связи — я думаю потому что мозг не любит асинхронности и сам подыскивает (кажущуюся) закономерность между видимым и слышимым. Даже при явном расхождении (быстрая музыка при медленном переключении или наоборот) всегда кажется что оно срабатывает на какие-нибудь особо ударные доли.
impetus
11.12.2017 21:12Эх, было дело когда-то этих визуализаций понапридумывал…
(Не судите строго — сайтик 97-го года, 20 лет уже прошло, блин...)
wholeman
11.12.2017 21:32А для ESP8266 или 32 подобного нету? Чтобы обойтись без кнопок и потенциометров, и рулить через веб-интерфейс.
tolegs Автор
11.12.2017 22:04Так. Начинается. На вечеринке руки должны быть свободны, а ты в смартфон уставишься). Нету!
wholeman
11.12.2017 22:10Лучше уж в смартфон, чем быть привязанным к панели управления.
tolegs Автор
11.12.2017 22:36Ну хорошо — пока нету. А за идею спасибо.
wholeman
15.12.2017 12:14Видимо, пока сделаю связку ESP8266+Arduino pro mini. Только мне не нравится, что нет разделения по каналам. У Ардуины же восемь аналоговых входов — можно и два канала сделать. Только FFT, наверно, не потянет — придётся делать RC-фильтры. Потом на Raspberry Pi переделаю — всё равно собираюсь на ней медиацентр делать.
sim2q
12.12.2017 04:41На вечеринке руки должны быть свободны, а ты в смартфон уставишься). Нету!
дельный коммент широкого применения:)
LeXeR3
11.12.2017 23:27+1Выглядит неплохо:)
Жалко, что поздновато выложили, светодиоды с Китая уже вряд ли успеют дойти, а у нас их или в принципе нет в продаже или по завышенным в 2-3 раза ценам.
А ещё я упустил момент, как сигнал с аудиоустройства подаётся? В видео тоже упоминаний не нашёл.
Года три назад пытался сделать подобную светомузыку на светодиодах Ws2801, правда с участием компьютера. Делал плагин для Aimp, который обрабатывал данные преобразованием Фурье и пересылал их дальше на Arduino. В целом получилось, но до ума так и не довёл. Ну и в описанной мной схеме очень смущала зависимость от ПК.
HiMem-74
12.12.2017 08:21Отчетливо видно, что алгоритм слишком медленный, не отыгрывает быстрые пики звука, а это как раз самое интересное!
Если бы я взялся реализовывать устройство, то вместо ресурсоемкого БПФ сделал бы 8 «аппаратных» полосно-пропускающих фильтров, например Чебышева (линейность АЧХ нам не особо нужна). Так получилось бы и такты сэкономить и быстрые пики поймать и визуализацию поинтереснее запилить.
ReshekPC
12.12.2017 10:31Привет, а вот где брать 60/120/180. На ebay только 30/60/144 LEDs
WildHorn
12.12.2017 11:21«30/60/144 LEDs» — это количество светодиодов на метр. Соответственно, например, 5 метров ленты при 60 LEDs — это 300 светодиодов, а при 144 LEDs — уже 720. А резать и склеивать ленту можно как угодно, там допустимый шаг разрезов в 1 диод.
EnigMan
12.12.2017 16:21Я так понимаю, что древовидную структуру тоже можно спаять? Не для применения в обсуждаемом проекте, а для подсветки растений, например.
WildHorn
12.12.2017 18:00«Как угодно» — я имел в виду «можно отрезать любое количество диодов». В RGB лентах к каждому диоду (точнее к каждой RGB тройке диодов) подключён свой контролёр. Он принимает 3 байта с шины данных, зажигает по ним светодиоды, а все последующие байты из посылки запихивает дальше в линию.
EnigMan
12.12.2017 18:40+1Помятуя о том, как работают эти ленты я подумал, что если к одному концу отрезка ленты припаять две ленты сразу, то каждая такая ветка получит от основания одинаковый набор байт и будет исполнять его симметрично. Например если мы по ленте пустим огонек, то на развилке он раздвоится и по каждой ветке побежит свой. Или я неправильно рассуждаю?
Saenco
15.12.2017 16:24Тут можно взять: 30/60/74/96/100/144.
Если нужен свой размер, всегда можно лишнее отрезать или допаять.
ru.aliexpress.com/item/1m-4m-5m-WS2812B-Smart-led-pixel-strip-Black-White-PCB-30-60-144-leds-m/2036819167.html?aff_platform=link-c-tool&cpt=1513344192018&sk=YFAI6ub&aff_trace_key=fd8dbe41c9274043a6e5f2dea6003b64-1513344192018-06576-YFAI6ub&terminal_id=f56fcf340f9d4ad99dd1cf657645e744
past
12.12.2017 12:01Посмотрите бибилиотеку FastLED https://github.com/FastLED/FastLED/blob/master/examples/Ports/PJRCSpectrumAnalyzer/PJRCSpectrumAnalyzer.ino
madf
12.12.2017 12:08Это всё весьма однообразно. Раньше меня всякие цветомузыки увлекали (видимо из-за недоступности) — вырос, теперь больше нравится более глобальный подход:
vconst
Может я чушь скажу, но можно ли управлять светодиодной лентой без адресных чипов? Генерировать что-то типа «стоячей волны» подаваемой в ленту? Похожий эффект был не у меня, но в одной из статей, где пытались сделать ШИМ на частотах в десятки килогерц, лента светилась неравномерно и при этом неравномерность перемещалась по ее длине. Не уверен в его причине, но мало ли… Проблема пропала при снижении частоты до килогерц.
Mulin
Интуитивно чую, что там надо припаять параллельно каждому светодиоду кондер. Но
вот прям обосновать, а нафига, не смогу.
vconst
Припаять для того, чтобы пропал эффект неравномерности? Я бы наоборот хотел ее усилить. Да и это довольно муторно — припаивать несколько сотен конденсаторов на ленту, где из выходов только контакты светодиодной сборки.
semen-pro
Можно попробовать линии задержки, колебательные контуры, кварцевые резонаторы и прочие нелинейные элементы. А управлять частотой.
tolegs Автор
На этой линейке в 180 светодиодов нет конденсаторов. Посадочные места есть, а кондёры не подпоял. Неравномерность заметна лишь на одном алгоритме — Импульс. Это когда яркие полосы из цента.
Krokodilewhile
А попадались ли вам готовые ленты с такой же частотой размещения светодиодов?
Чтоб не паять руками три сотни деталюшек
tolegs Автор
Нет. они обычно реже. Раза в два. Самая плотная 60 на метр
BigBeaver
144 же.
BigBeaver
Одноцветная уже по 240 не редкость.
Впрочем, уже и адресную на 198 сделали. В течение года ждем на али. В целом, есть потенциал до 400 на метр.
tolegs Автор
Здорово. Ждём!
tolegs Автор
Интересно. У меня есть ШИМ с изменением частоты. Попробую обязательно. Хотя физика не понятна…
izzholtik
На каждый светодиод напаивается LC, управляются изменением частоты сигнала.
Ezhyg
И именно так раньше и делалась простая (да и не очень) цветомузыка и без всяких ородруин и прочих контроллеров! :)
Gdalex
Я еще в школе, когда вел дискотеки, использовал стартеры от ламп дневного света и конденсаторы разной емкости. Тоже по тем временам очень неплохо смотрелось :)
Но, самая крутая светомузыка была на двигателе с редуктором от самописца и вытравленных на круглом куске текстолита шаблоне. Двигатель крутил шаблон, контакты замыкались по вытравленной программе. Для смены эффекта менялся шаблон :-). Это потом уже появились ППЗУ, тиристоры и прочее..
vconst
Повторяю — в теории я разбираюсь слабо, эти мысли мне навеяло видео о том, как в трубу с газом пускали низкочастотную стоячую волну и она модулировала высоту пламени. Может и неправильно все понимаю.
Semerkhet
Нда, в детстве дгуг, со слов его отца, говорил что в елочной гирлянде крайние лампочки светят сильнее от того, что электричество именно к ним подходит, а остальным достается что осталось.
Подозреваю что ваш «феномен» несколько связан с частотой «мигания» и частотой опроса камеры. Вы без труда сможете получить подобное, засняв на телефон телевизор (большой такой, несовременный, с кинескопом)
BigBeaver
kontnoor
Та же диодная лента на 10 метрах заметно просаживается по яркости
BigBeaver
Так потому, что медь жалеют. Она рассичтана на каскадирование по 5-6 обычно. Иногда это даже сообщают в документации.
Semerkhet
В том то и дело, что в нашем с ним детстве были только обычные советские гирлянды из лампочек на 13,6в последовательно штук 17.
vconst
Люди описывали то, что видели своими глазами, а не только как эффект на видео. При уменьшении частоты с десятков килогерц до единиц килогерц — эффект пропал, а на видео должно быть наоборот — он должен был усилиться.
BigBeaver
На килогерцах не должно быть такого эффекта со сколь-нибудь разумными расстояниями (длинами ленты). Но, в целом, идея выглядит жизнеспособной, хоть получить именно адресной управление и не выйдет.
vconst
На десятках килогерц.
BigBeaver
Все равно мало, кмк. Дециметровые волны это сотни мегагерц. Спектр импульса, конечно, растянут, но какая там мощность в высоких гормониках? Довольно смешная. Колебания на доли процентов яркости глаз не заметит.
vconst
Может я и не прав, но все равно любопытно.
BigBeaver
Про интересность согласен. Есть и другие эффекты. Например, берем ленту, подключенную к какому-нибудь дешевому импульснику. Все выклчаем, но не выдергиванием из разетки, а просто один провод разрываем кнопкой — ничего не горит. Подносим к ленте палец — один сегмент загорается.
olartamonov
Поздравляю вас с изобретением отвёртки-пробника.
BigBeaver
Ну для меня это давно не новость)
tolegs Автор
Ты настоящий гик
San66
Элементарно, если вспомнить, что адресация бывает не только абсолютной, но и относительной.