Предлагаю здесь делится наработками кода в плане реализации выделения спектра для цветомузык и иже с ними.
Цифровые фильтры для ЦМУ
Сообщений 1 страница 30 из 38
Поделиться22011-05-31 22:51:00
Есть метод пяти и семи ординат для вычисления 4 и 6 частот. Некое подобие я делал здесь - http://bascom.at.ua/publ/1-1-0-5. Правда, нигде не нашёл, с какой периодичностью замеры делать для определённой полосы частот. На глаз моргало вроде неплохо, а на приборах лучше не смотреть...
http://www.exponenta.ru/soft/mathemat/d … b3/nb3.asp
http://www.nbuv.gov.ua/portal/natural/G … _77/19.pdf
Поделиться32011-06-01 09:15:29
Вполне можно успеть еще и ШИМ обслужить.
Предлагаю объединить усилия в этом направлении.
Могу поучаствовать тем, что лучше всего получается - ПО со стороны компа (задел на будущее - для связи и редактирования эффектов), разработка платы. С контроллерами как раз напряг - и по времени, и по знаниям....
Поделиться42011-06-02 08:54:46
Т.е. канал связи с компом должен быть предусмотрен?
А почему бы и нет? У нас ведь есть EEPROM, в которую можно заливать эффекты, запрограммированные пользователем. И их легче в визуальном конструкторе делать, чем кодом описывать. Можно будет через программу с компьютера управлять источниками света. А если компьютер не включен - автономная работа. Универсальное устройство получится.
Поделиться52011-06-03 10:05:47
Для обсуждения структурная схема:

Поделиться62011-06-04 09:43:03
В целях экономии ножек можно уменьшить количество 3 светодиодов и заменить (скажем) одним. (цму/сду/авто)
ИК диод на прием возможно придется тоже включать через схему усиления.
А вот для микрофона наверное такие навороты (МУ/ФНЧ) не нужны, у нас же есть АЦП и качество повторения сигнала не обязательно, т.е. нас интересует не разрядность по большей части, а частота.
Поделиться72011-06-04 12:51:15
В целях экономии ножек можно уменьшить количество 3 светодиодов и заменить (скажем) одним. (цму/сду/авто)
Один светодиод мало информативен. На крайний случай можно применить двухцветный, сэкономим 1 порт, получим красный/зеленый/желтый цвета.
ИК диод на прием возможно придется тоже включать через схему усиления.
Пименять будем ИК-приемник RC5 по стандартной схеме включения.
За основу амбилайта можно взять Mirlight 2 (Domowy Ambilight)
Отредактировано max (2011-06-04 13:02:00)
Поделиться82011-06-04 13:31:16
У меня мысля появилась следующая - ловим переходы через 0, отслеживаем время до сл. перехода - отсюда получаем частоту, во время ожидания следующего 0 - меряем среднеквадратичное значение амплитуды.
код типа такого, еще измерение RMS бы дописать
$regfile = "m8def.dat" ' мега8 $crystal = 8000000 Ddrb = 1 Dim K As Integer , Period As Integer Enable Aci ' разрешаем прерывание от компаратора On Aci Analogkomp ' при срабатывании компаратора переходим к подпрограмме Config Timer2 = Timer , Prescale = 8 : On Timer2 Pulse : Enable Timer2 Enable Interrupts Do Print Period Loop Analogkomp: Stop Timer2 Period = Timer2 * K Timer2 = 0 K = 1 Start Timer2 ' Toggle Portb.0 Return Pulse: Incr K Return
Отредактировано Pasha (2011-06-04 14:11:43)
Поделиться92011-06-04 15:09:41
За основу амбилайта можно взять Mirlight 2 (Domowy Ambilight)
Кстати я недавно об таком думал, только данная схема весьма мало интересна, т.к. требует обязательного наличия компьютера и не применима скажем для аналоговой техники. Как раз эта часть была бы мне интересна, а её там нет. (
Поделиться102011-06-04 15:11:37
т.к. требует обязательного наличия компьютера
А в чем тогда смысл амбилайта?
Поделиться112011-06-04 17:28:36
Кто не хочет амбилайта - не подключайтесь к ПК. Кто не хочет пульта -не пользуйтесь. Устройство в таком случае будет автономным... Аналоговый сигнал через микрофон всё равно при такой концепции цифровым методом обрабатываться будет.
Поделиться122011-06-04 17:32:20
Кто может в железе код опробовать? Нужно 6 светодиодов, и музыку на PortD.7 подать
$regfile = "m8def.dat" ' мега8 $crystal = 8000000 Ddrb = 255 Dim K As Integer , Chastota As Long , A As Integer , Amplituda As Double , Temp As Double , Skz As Long Enable Aci ' разрешаем прерывание от компаратора On Aci Analogkomp ' при срабатывании компаратора переходим к подпрограмме Config Timer0 = Timer , Prescale = 1 : On Timer0 Pulse : Enable Timer0 Enable Interrupts Do If Chastota < 100 Then Set Portb.0 Else Reset Portb.0 If Chastota > 100 And Chastota < 1000 Then set Portb.1 Else Reset Portb.1 If Chastota > 1000 And Chastota < 2000 Then Set Portb.2 Else Reset Portb.2 If Chastota > 2000 And Chastota < 3000 Then Set Portb.3 Else Reset Portb.3 If Chastota > 3000 And Chastota < 5000 Then Set Portb.4 Else Reset Portb.4 If Chastota > 5000 And Chastota < 20000 Then Set Portb.5 Else Reset Portb.5 delay Loop Analogkomp: Stop Timer0 Chastota = K * 256 Chastota = Chastota + Timer0 Chastota = 3685000 / Chastota Timer0 = 255 K = 1 Start Timer0 Return Pulse: Incr K Return
В протеусе интересно получилось
Отредактировано Pasha (2011-06-04 17:34:11)
Поделиться132011-06-04 18:21:21
А в чем тогда смысл амбилайта?
В том, что я хотел это всё приспособить к бытовой технике, а не просто к монитору.
Поделиться142011-06-04 22:12:13
В протеусе интересно получилось
Хочу в протеусе!
max написал(а):
А в чем тогда смысл амбилайта?
В том, что я хотел это всё приспособить к бытовой технике, а не просто к монитору.
Со звуком проще, с видео немного посложнее будет. Нужно использовать микросхему для выделения синхросигнала, быстродействующие АЦП для RGB и быстро считать. Боюсь что Меги не хватит. Или разгонять, или на каждый канал захвата поставить по своему контроллеру.
Поделиться162011-06-04 23:52:29
Pasha, спасибо. Такой вопрос - можно как-то услышать в протеусе звуковой файл (PortD.7), или это нереально?
Поделиться172011-06-05 12:18:40
ожно как-то услышать в протеусе звуковой файл (PortD.7), или это нереально
мой приятель слушал посылки 22 кгц
вроде просто "подключал" пищалку на нужный выход и все...
сегодня попробую уточнить
Поделиться182011-06-05 15:18:53
Ambilight, вообще-то это несколько позиционированных каналов RGB. Получается цветомузыка тоже будет 3-полосной? Я не против, просто Вы уж определитесь сразу, чтобы было от чего плясать.
Цветомузыка будет многополосной. Только каждая полоса сможет быть представлена любым из возможных цветов RGB. Например, всего 7 полос - соответствует числу цветов в радуге. Эти семь полос будут представлены 21 каналом - 7хRGB. Тогда каждый канал можно будет настроить на свой цвет. И эффекты можно нестандартные сделать - например, бегущий красный огонь на фоне синего цвета и т.д. 7 полос и для Амби должно хватить - 3 вверх, по 1 на стороны и 2 вниз. Можно конечно на 8 полос заложиться - всё таки число к нам, программистам, ближе чем 7.
Поделиться192011-06-05 15:46:25
Тогда рисунок блок-схемы нужно скорректировать - 21 ШИМ - 21 LED.
В качестве идеи - вместо FFT использовать BA3834, а мк займется своими привычными функциями.
Без проблем, рисунок поправлю. BA3834 - есть одна конструкция на ней, постараюсь подготовить материал. Только вот хочется изящное решение на одном контроллере. Какой контроллер за основу возьмём? Я М16 предлагаю - запас по ногам есть.
Поделиться202011-06-05 16:28:00
Я М16 предлагаю - запас по ногам есть.
М16 или М32.
Поделиться212011-06-05 17:38:00
radan да, пищалку подцепи там у нее в названии гдето Sound card упоминается, ну или wav файл в архиве прослушай, чтоб представление иметь, беда в том что протеус в реалтайме не успевает - наверное сильно ужасно будет слышно.
http://depositfiles.com/files/zq6iszppa с пищалкой через саунд карту, довольно не плохо. Звук как и думал - очень ужасный и прирывистый, но очень хорошо видно когда ВЧ играет как ведут себя диоды.
Отредактировано Pasha (2011-06-05 17:52:14)
Поделиться222011-06-05 18:46:40
Звук как и думал - очень ужасный и прирывистый
Какой же компьютер нужен, чтобы протеус успевал!?
Нужно в железе пробовать.
Поделиться232011-06-06 08:31:28
Очевидно это Спектроанализатор звука ПИЧОК. Микросхемка стОит меньше доллара. Куда уж элегантнее...
Нет, это моя конструкция. ЦМУ + бегущие огни. На Васике.
radan написал(а):
Нужно в железе пробовать
Ох, не советую...
Почему?
Поделиться242011-06-06 10:40:31

Предлагаю разбить задачу на более мелкие и решать их в несколько этапов или нескольким человекам одновременно.
1. Ядро - 24 канала ШИМ, связь с ПК, индикация режимов, пульт ДУ, связь с модулями аудио и видео. Встроенные эффекты.
2. Аудио - фурье на 24 канала
3. Видео - захват 8 областей
4. Компьютер - управляющая программа для компьютерной ЦМУ, СДУ, АМБИ, настроек....
Продумать, как будут стыковаться блоки между собой на уровне железа и на уровне ПО.
Устройство получится хоть и сложное, но боле простое в наладке и эксплуатации, чем на одном ARM...
Его можно будет собирать в такой конфигурации, которая нужна пользователю.
Не нужна функция - исключил её.
Поделиться252011-06-06 16:21:43
Зачетная должна получится вещь!
Поделиться262011-06-06 23:23:54
Можно и подешевле контроллеры использовать.
А можно для начала просто опробовать на Меге 48. В ней 6 каналов аппаратного ШИма есть. Достаточно выделить спектр и передать в ШИМы. Жаль времени к железу притронуться совсем нет.
Поделиться272011-06-13 14:34:35
Кто может в железе код опробовать?
Попробовал. Работает! Очень похоже на Кошачий глаз первого варианта (без градаций яркости). Очень динамично получилось. Только я немного спектр в НЧ сместил.
If Chastota < 100 Then Set Portb.0 Else Reset Portb.0 If Chastota >= 100 And Chastota < 200 Then Set Portb.1 Else Reset Portb.1 If Chastota >= 200 And Chastota < 400 Then Set Portb.2 Else Reset Portb.2 If Chastota >= 400 And Chastota < 800 Then Set Portb.3 Else Reset Portb.3 If Chastota >= 800 And Chastota < 1600 Then Set Portb.4 Else Reset Portb.4 If Chastota >= 1600 And Chastota < 3200 Then Set Portb.5 Else Reset Portb.5 If Chastota >= 3200 Then Portb = 0
Сигнал подавал прямо с выхода звуковой карты на массу и 13 ножку Меги-8.
Поделиться282011-06-13 22:05:57
Попробовал. Работает!
Спасибо за старания, сам хотел сегодня взяться за паяльник) При тишине наверное мигает все время?
Поделиться292011-06-13 22:21:58
При тишине наверное мигает все время?
Да нет, или вообще потушены все светодиоды, или горит какой-то один. Нужно что-то в алгоритме менять, чтобы в паузе все светики были потушены. Или ещё лучше - включались бегущие огни. Есть пару задумок, но выходные закончились быстрее, чем хотелось. Теперь нескоро вернусь к этой схемке... А жаль, имеет право на жизнь.
Поделиться302011-06-14 00:50:46
radan
$regfile = "m8def.dat" ' мега8 $crystal = 8000000 Ddrb = 255 Config Portd.6 = Output Portd.6 = 0 Dim K As Integer , Chastota As Long ', A As Integer , Amplituda As Double , Temp As Double , Skz As Long Enable Aci ' разрешаем прерывание от компаратора On Aci Analogkomp ' при срабатывании компаратора переходим к подпрограмме Config Timer0 = Timer , Prescale = 1 : On Timer0 Pulse : Enable Timer0 Enable Interrupts Do If Chastota < 20 Then Portb = 0 If Chastota >= 15000 Then Portb = 0 If Chastota < 300 Then Set Portb.0 Else Reset Portb.0 If Chastota > 300 And Chastota < 1500 Then Set Portb.1 Else Reset Portb.1 If Chastota > 1200 And Chastota < 3000 Then Set Portb.2 Else Reset Portb.2 If Chastota > 2500 And Chastota < 4500 Then Set Portb.3 Else Reset Portb.3 If Chastota > 3700 And Chastota < 4810 Then Set Portb.4 Else Reset Portb.4 If Chastota > 4860 And Chastota < 15000 Then Set Portb.5 Else Reset Portb.5 If Portb <> 0 Then Waitms 50 If Portb.5 = 1 Then Waitms 150 Select Case Chastota Case Is > 4870 : Waitms 80 Case Is < 300 : Waitms 20 End Select Delay Loop Analogkomp: Stop Timer0 Chastota = K * 256 Chastota = Chastota + Timer0 Chastota = 3685000 / Chastota Timer0 = 255 K = 1 Start Timer0 Return Pulse: Incr K Return
radan может мысли будут по поводу следующего куска - програмный шим, между прерываниями компаратора определяем амплитуду, мне не нра как оно работает - слишком часто мигает, шим воб щем то за миганиями и не виден
$regfile = "m8def.dat" ' мега8 $crystal = 8000000 Ddrb = 255 Config Portd.6 = Output Portd.6 = 0 Dim K As Integer , Chastota As Long , A As Byte , I As Byte , Adc_ As Long , Temp As Integer , Shetchik As Integer , Amplituda As Integer ' переменные ШИМа Dim Canal(6) As Byte , Shim(6) As Byte Enable Aci ' разрешаем прерывание от компаратора On Aci Analogkomp ' при срабатывании компаратора переходим к подпрограмме Config Timer0 = Timer , Prescale = 1 : On Timer0 Pulse : Enable Timer0 Config Timer2 = Timer , Prescale = 1 : On Timer2 Shim_ : Enable Timer2 Enable Interrupts Config Adc = Single , Prescaler = Auto , Reference = Internal : Enable Adc : Start Adc Do Stop Timer2 Temp = Getadc(5) Start Timer2 Adc_ = Adc_ + Temp Incr Shetchik Loop Shim_: For I = 0 To 5 Incr Shim(i + 1) : If Shim(i + 1) >= Canal(i + 1) Then : Set Portb.i : Shim(i + 1) = 0 : Else : Reset Portb.i : End If Next Return Analogkomp: Stop Timer0 Chastota = K * 256 Chastota = Chastota + Timer0 Chastota = 3685000 / Chastota Timer0 = 255 K = 1 Start Timer0 Amplituda = Adc_ / Shetchik Amplituda = Amplituda / 4 If Chastota < 300 Then Canal(1) = Amplituda Else Canal(1) = 255 If Chastota > 300 And Chastota < 1500 Then Set Canal(2) = Amplituda Else Canal(2) = 255 If Chastota > 1200 And Chastota < 3000 Then Canal(3) = Amplituda Else Canal(3) = 255 If Chastota > 2500 And Chastota < 4500 Then Canal(4) = Amplituda Else Canal(4) = 255 If Chastota > 3700 And Chastota < 4810 Then Canal(5) = Amplituda Else Canal(5) = 255 If Chastota > 4860 And Chastota < 15000 Then Canal(6) = Amplituda Else Canal(6) = 255 Amplituda = 0 Return Pulse: Incr K Return
Отредактировано Pasha (2011-06-14 03:24:33)