С любезного разрешения автора(peroon)
Цветомузыка на AVR (ATMega16).

Из преимуществ над другими вариантами — возможность задавать диапазоны частот на каждый канал индивидуально.
Для этого применяется LCD дисплей и энкодер.
Аналоговая часть взята со схемы Детка.
Цифра взята с какого то форума, малость доработана, а точнее разведена на два канала(стерео).
Для настройки полос был введен LCD16/2.
(Можно и другой, если поправить индикацию. В начале хотел сделать индикацию работы каналов на нем, но он тупо не справился по скорости отображения.)
В исходной программе, откуда в принципе и бралась алгоритмика, использовался массив вида:
unsigned char E_spektrum_canal_left[8] = {4,8,12,16,18,22,26,30};
Массивов у меня два — значения измерений по частотам левого и правого каналов, которые выбираются из массива spektrum:
spektrum[0] 0
spektrum[1] 156,25
spektrum[2] 312,5
spektrum[3] 468,75
spektrum[4] 625
…….
spektrum[29] 4531,25
spektrum[30] 4687,5
spektrum[31] 4843,75
Эти значения постоянно получаются из замеров АЦП и обрабатываются библиотекой ffft.s (ставшей уже стандартной, и применяемой много где, в том числе и в ЦМУ).
Значения массива я затащил в EEPROM, потом при старте железки вытаскиваю в обычный массив.
При помощи энкодера переключаем каналы и задаем значения поворотом (значение от 0 до 31).
При переходе на следующий параметр пишем в EEPROM .
Преимуществ (для меня) два: это при ошибке разводки канала можно переназначить частоты и радоваться, ну и вторая вытекает из первой — можно на лету проиграться с цветами уже на готовой ЦМУ, без лишних экспериментов и прошивок.
Выходные каналы работают на программном ШИМе, по таймеру.
При этом регулируется и яркость (верхний порог ШИМ) и скорость обновления.
Меня немного раздражает скорость «моргания», по идее, можно вставить задержку на переключение ШИМа по каждому каналу, либо посадить емкости параллельно светодиодам.
Схема:
Под экраном смонтированы светильники, что бы хрусталь «играл». 8 каналов,
сведенных ULN-ками из 2х8 стерео.


Архив со схемой и платой для proteus.
Исходный код.
Я не собирал, но если смотрим исходный кода, то там дефинировано #define F_CPU 16000000UL, так что 16MHz.
Добрый всем вечер.Мужики подскажите кто собирал ЦМУ с выбором диапазона частот,без дисплея будет работать если да то какой нужен кварц, а то в схеме он не указон. Большое спасибо.
http://youtu.be/T9P3SSM4F_A
Видео работы
Как буду в гостях, сниму на телефон.
На самом деле (на мой взгляд) тут интересно больше тот момент, что она отрабатывает стерео. Т.е. два аналоговых канала на входе.
Мерцанием я называю скорость включения и выключения светодиодов. Тут можно как то побороться обычными емкостями , либо снизить скважность опроса АЦП.
Может есть возможность выложить небольчое видео работы устройства? Хотелось бы это включить в мой список повторяемых конструкций на будущее, но вот отпугивает упоминание мерцания. Я сторонник плавного зажигания и гашения каналов (ну уж если и регулируемая плавность, то вообще сказка). Как с этим делом здесь?