С Новым годом! Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/43: Рейтинг темы: голосов - 43, средняя оценка - 4.53
0 / 0 / 0
Регистрация: 28.06.2014
Сообщений: 21

Цветомузыка или анализатор спектра (Atmega48)

20.11.2014, 04:00. Показов 8677. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.
Недавно начал собирать цветомузыку на Atmega16, но контроллер пришлось пустить в другое русло.
На время все было заброшено, а вот сейчас решил закончить начатое.
Atmega16 больше в запасах не нашел, но нашел пару Atmega48.

Задача для цветомузыки следующая:
1. Управление диодными лампами в зависимости от частоты
2. Управление стробоскопом (пока не решил точно, как будет реализовано. Скорее всего, будет тоже управляться частотой от 1-20 Гц)
3. При отсутствии музыки, плавное включение и выключение ламп (стробик не в теме)

Собственно, когда начинал все это дело на Atmega16, часть была реализована, но вот с переходом на Atmega48,
появились проблемы.
Потратил пол ночи на чтение даташитов, но так и не смог заставить Atmega48 работать как нужно.
Пишу в CodeVisionAVR
Контроллер был настроен таким способом
C
1
2
3
4
5
6
    TCCR0 = 0x04;
    TCCR1A=0x00;
    GICR=0x40;
    MCUCR=0x03;
    GIFR=0x40;
    TIMSK=0x05;
Потратив кучу времени, на листание даташитов, смог только включить INT0, и на этом встрял.
В конечном итоге, так и не удалось заставить таймер работать.

Помогите запустить этот таймер.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.11.2014, 04:00
Ответы с готовыми решениями:

Анализатор спектра видеофайлов в Proteus
Помогите, пожалуйста, собрать и написать программу на си анализатора спектра видеофайлов в Proteus.

Подскажите программу Анализатор звукового спектра с частоты 5 или 10 ГЦ
Необходима программа Анализатор звукового спектра с частоты 5 или 10 ГЦ (идеально если даже с 0 Гц) Просмотрел несколько нашел самую...

Proteus. Анализатор спектра
Есть провод с сигналом, надо снять его спектр. Есть ли в протеусе спектрограф, и если да - как им воспользоваться?

22
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
20.11.2014, 07:42
...и где же он? Чем генератор шаблонов не устроил?
0
0 / 0 / 0
Регистрация: 28.06.2014
Сообщений: 21
20.11.2014, 08:45  [ТС]
Цитата Сообщение от raxp Посмотреть сообщение
...и где же он? Чем генератор шаблонов не устроил?
Да я просто запутался с регистрами.
Сейчас вроде разобрался..

Сейчас есть другие вопросы:
1. Есть ли способ, включения\выключения порта беспорядочно.
Допустим, первый раз на порт подалось 2 импульса, второй раз 5 импульсов и т.д.
Но так, чтобы количество импульсов не превышало, скажем 6 импульсов.

2. Как правильно посчитать частоту входящего сигнала на вход INT0?
0
1184 / 670 / 113
Регистрация: 15.05.2012
Сообщений: 4,078
20.11.2014, 09:15
1. Пишем датчик ПСЧ. Ну и, по вашим требованиям,
C
1
rnd%= 6;
2. Запускаем таймер. По приходу (в смысле сигнала) считываем данные из таймера (для рассчета частоты) и обнуляем таймер.
0
0 / 0 / 0
Регистрация: 28.06.2014
Сообщений: 21
20.11.2014, 10:23  [ТС]
Цитата Сообщение от pyzhman Посмотреть сообщение
2. Запускаем таймер. По приходу (в смысле сигнала) считываем данные из таймера (для рассчета частоты) и обнуляем таймер.
Это я понял, так и сделал, а вот как правильно считать частоту?
Допустим:
1. Мега работает на частоте 1MHz
2. TCCR0B = 0x05 (clkI/O/1024 (From prescaler)
Вот как мне исходя из этого, высчитать необходимые частоты.
0
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
20.11.2014, 10:47
ИМХО: Для цветомузыке лучше проводить спектральный анализ сигнала. Полноценный БПФ в реал тайме конечно на AVR не сделать, но что то простое на базе вот этого проекта http://elm-chan.org/works/akilcd/report_e.html можно попробовать.
0
0 / 0 / 0
Регистрация: 28.06.2014
Сообщений: 21
20.11.2014, 11:51  [ТС]
pyzhman, спасибо большое, даже и не знал если честно, что есть функция rand.
Теперь буду знать...

Витальич, А вот нельзя ли с этого места немного подробнее?
Может кинете ссылочку по этой теме (с подробностями)?
Я конечно полистаю, но в этом я далек.
Мне бы чего по проще..

По большому счету, мне необходимо только примерно высчитать частоту, не нужно 100% результата.
0
1184 / 670 / 113
Регистрация: 15.05.2012
Сообщений: 4,078
20.11.2014, 14:20
Там по ссылке есть исходники.
0
 Аватар для Витальич
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
20.11.2014, 14:46
Цитата Сообщение от Vladimir1 Посмотреть сообщение
А вот нельзя ли с этого места немного подробнее?
Сразу вопрос, а зачем Вам измерять частоту "музыкального" сигнала, в том виде в которой Вы получите данные о частоте, ни как не будут соотносится с музыкой в которой Вы его померили. Другими словами, музыка отдельно непонятный параметр "частота" отдельно. Разложение на спектральные составляющие позволит получить в цифровом виде характер музыкального фрагмента, допустим выделить ритмический рисунок итд.
Цитата Сообщение от Vladimir1 Посмотреть сообщение
Мне бы чего по проще..
Внешний усилитель, простейшие фильтры НЧ, СЧ, ВЧ и с этих фильтров на АЦП контроллера (три канала).
1
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
20.11.2014, 17:06
Цитата Сообщение от Витальич Посмотреть сообщение
Внешний усилитель, простейшие фильтры НЧ, СЧ, ВЧ и с этих фильтров на АЦП контроллера (три канала).
Поддерживаю.

и кстати, насчет БПФ для АВР,
Цитата Сообщение от Витальич Посмотреть сообщение
Полноценный БПФ в реал тайме конечно на AVR не сделать
кажись, на том же сайте, куда вы отправили ТС, я встречал частотный анализ звука и вывод в виде более широкого эквалайзера, не такого как по линку. Правда, там использовался камень по-мощнее меги48, и частота была предельной для АВР - 20МГц.
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
20.11.2014, 20:47
БПФ с вычислением фаз:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
////////////////////////
// БПФ с вычислением фаз
/////////////////////////
#include < math.h >
#define _N_SAMPLES_ (512) // 32,64,128,256,512,1024 points
#define _F_SAMPLES_ (100.0) // Частота тестового сигнала, Hz
#define _A_SAMPLES_ (100.0) // Амплитуда тестового сигнала
 
#if !defined M_PI
#define M_PI (3.14159265359)
#endif
 
float x[ _N_SAMPLES_ ], y[ _N_SAMPLES_ ], F, A, Re, Im, Fi;
 
//---------------------------------------------------------------
// I=1 --> БПФ 
// I=-1 ---> Oбратное БПФ
void BPF( float *x, float *y, int N, signed char I )
{
volatile float c, s, t1, t2, t3, t4, u1, u2, u3;
volatile int i, j, p, l, L, M, M1, K;
 
L = N;
M = (N / 2);
M1 = (N - 1);
 
while( L >= 2 )
{
l = (L / 2);
u1 = 1.0000;
u2 = 0.000;
t1 = M_PI / (float)l;
c = cos( t1 );
s = (-1.000) * I * sin( t1 );
 
for( j = 0; j < l; j++ )
{
for( i = j; i < N; i += L )
{
p = i + l;
t1 = *(x+i) + *(x+p);
t2 = *(y+i) + *(y+p);
t3 = *(x+i) - *(x+p);
t4 = *(y+i) - *(y+p);
*(x+p) = (t3*u1) - (t4*u2);
*(y+p) = (t4*u1) + (t3*u2);
*(x+i) = t1;
*(y+i) = t2;
}/*for*/
u3 = (u1*c) - (u2*s);
u2 = (u2*c) + (u1*s); 
u1 = u3;
}/*for*/
L /= 2;
}/*while*/
 
j = 0;
 
for( i = 0; i < M1; i++ )
{
if( i > j )
{
t1 = *(x+j);
t2 = *(y+j);
*(x+j) = *(x+i);
*(y+j) = *(y+i);
*(x+i) = t1;
*(y+i) = t2;
}/*if*/
 
K = M;
 
while(j >= K)
{
j -= K;
K /= 2;
}/*while*/
j += K;
}/*for*/
 
}/*BPF*/
//----------------------------------------------------
//----------------------------------------------------
//----------------------------------------------------
//----------------------------------------------------
//----------------------------------------------------
//----------------------------------------------------
/* Моделирование синусоидального тестового сигнала 1 */
/* Один период синуса за N измерений */
/* P - Массив выборок размерностью N */
/* A - Амплитуда (Частота _F_SAMPLES_ не имеет значения)*/
void Sinsignal_For_Test_One_Period( float *P, float A, int N ) 
{
volatile int i;
volatile float r, re, re1, im, im1;
 
for( i = 0; i < N; i++ )
{
*(P+i) = A * cos( 2.00 * M_PI *(float)i / (float)N ); 
}/*for*/
}/*Sinsignal_For_Test_One_Period*/
//---------------------------------------------------- 
 
//----------------------------------------------------
/* Моделирование синусоидального тестового сигнала 2 */
/* F периодов синуса за N измерений */
/* P - Массив выборок размерностью N */
/* F - Частота, Гц */
/* A - Амплитуда */
void Sinsignal_For_Test( float *P, float F, float A, int N ) 
{
volatile int i;
volatile float r, re, re1, im, im1;
 
re = cos((2.00 * M_PI * F ) / (float)N);
im = sin((2.00 * M_PI * F ) / (float)N);
 
re1 = A; 
im1 = 0.00;
 
for( i = 0; i < N; i++ )
{
*(P+i) = re1; 
r = re1;
re1 = (r * re) - (im1 * im); 
im1 = (im1 * re) + (r * im);
 
}/*for*/
}/*Sinsignal_For_Test*/
//---------------------------------------------------- 
 
//----------------------------------------------------
__C_task main( void )
{
unsigned int j, N;
 
N = _N_SAMPLES_; // Points
F = _F_SAMPLES_; // Hz
A = _A_SAMPLES_; // Amplituda
 
////////////////////////////////
// Задаем входной сигнал
////////////////////////////////
 
// Пример 1. F периодов синуса за N выборок
//Sinsignal_For_Test( x, F, A, N ); // Генерация sin
 
// Пример 2. Один период синуса за N выборок
Sinsignal_For_Test_One_Period( x, A, N ); // Генерация sin
 
 
// Пример 3. Импульсный сигнал 
// !!!!!! Сделать _N_SAMPLES_ = 32. 
// _А_SAMPLES_ _F_SAMPLES_ не имеют значения
// for( j=0; j<8; j++ )
// {
// x[j] = 1.000;
// }/*for*/ 
// Остальные х[9...31] нули. Все y[0...31] нули
 
////////////////////////////////
// Вызов БПФ
////////////////////////////////
 
BPF( x, y, N, 1);
 
////////////////////////////////
////////////////////////////////
////////////////////////////////
 
for( j = 0; j < N/2; j++ )
{
/////////////// Расчет амплитуд
Re = *(x + j);
Im = *(y + j);
 
////////////////////////////////////////////////////////////////
A = sqrt( (Re * Re) + (Im * Im) );
if( j )
{
A = (A * 2.000);
}/*if*/
A = ( A / (float)N); 
/////////////////////////////////////////////////////////////////
 
////////////////////////////////////////////////////
/////////////// Расчет фаз
Fi = 0.000;
 
if( (A < (-0.001)) || (A > 0.001 ) )
{
if( (Re > (-0.000000001)) && (Re < 0.000000001 ) )
{
if( Im > 0.000000001 ) Fi = 1.5708;
if( Im < (-0.000000001) ) Fi = (-1.5708); 
}/*if*/
else
{
Fi = atan2( Im , Re );
Fi = ((180.000 * Fi) / M_PI);
}/*else*/ 
}/*if*/
//////////////////////////////////////////////////// 
// Вывод на экран
///////////////////////////////////////////////////
printf(" A[%d] = %.3f, Fi = %.2f \n", j, A, Fi );
///////////////////////////////////////////////////
}/*for*/ 
}/*main*/
//##################################################
взято из сорцов закрепленной темы из телеконференций telesys точка ру.

p.s.: есть методы проще, например пяти ординат. Читать http://www.exponenta.ru/soft/m... b3/nb3.asp
1
0 / 0 / 0
Регистрация: 28.06.2014
Сообщений: 21
24.11.2014, 00:01  [ТС]
Всем доброго времени суток...
Короче, собрал схему на "коленке" залил свою прошивку и могу сказать следующее:
Все конечно заработало, но как вы и предполагали, не совсем удачно.
Все в большей степени зависит от стиля музыки.
Смотрится конечно не плохо, но всегда хочется большего.
Сегодня целый день потратил на разбор представленной Вами информации относительно использования БПФ,
но так ничего и не получилось.
Разобраться в куске кода, который предоставил raxp, так и не смог (видать не по зубам пока такое).
Ладно, будем дальше копать, можем разберусь.
0
0 / 0 / 0
Регистрация: 28.06.2014
Сообщений: 21
25.11.2014, 11:41  [ТС]
Все, плесецк, голова кирпичом.
Народ, выручайте, как на CodeVision реализовать БПФ?
Перерыл ..еву тучу инфы с исходниками, но так и не понял.
Объясните мне ПОЖАЛУЙСТА, как все это реализуется?
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
25.11.2014, 20:16
...вам с нуля или разжеванное? Полуразжеванное дано выше, а с нуля в закрепленных темах в ЦОС ветке.

Вариант разжеванного - 10-ти полосный светодиодный анализатор спектра


тут
Вложения
Тип файла: zip SPECTR.zip (1.67 Мб, 40 просмотров)
1
0 / 0 / 0
Регистрация: 28.06.2014
Сообщений: 21
01.12.2014, 13:00  [ТС]
raxp, нужно с нуля.
Я, сказать по правде, полный дуб в программировании для AVR.
Ну никак мне не разобраться с тем, как все сделать.
Как принять сигнал, как обработать и получить то, что мне нужно.
Я уже думал над тем, чтобы подключить мегу к COM порту и рулить всем через него, но и тут я залип...
В общем, вот так все плохо..
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
01.12.2014, 14:57
Vladimir1, возьмитесь за задачу по-проще, усложняйте постепенно. Сначала поморгайте лампочками, потом ярче/тише, попеременно. Затем введите вход АЦП как исходные данные яркости свечения ламп. Затем сделайте простенький FIFO, чтобы сделать, например, огибающую усреднением для выбора яркости свечения ламп. Ну, а там и FFT не за горами будет...
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
01.12.2014, 20:32
Вот, вот.

Как вариант упрощения реализации цифровых фильтров в МК можно использовать http://www-users.cs.york.ac.uk... /trad.html. Выбираете тип фильтра: "Баттерворт", "Бессель", "Чебышев" и ФНЧ, ФВЧ, полосовой или заграждающий, далее порядок фильтра (max = 10), далее вводите частоту дискретизации сигнала и необходимые частоты среза фильтра. Нажимаете "Отправить" и на следующей страничке имеете пример кода на С, значения коэффициентов, АЧХ полученного фильтра и графики реакции на прямоугольный импульс. Ряд простых полосовых фильтров с выводом на индикацию реализовать можно на раз, без FFT.
0
0 / 0 / 0
Регистрация: 28.06.2014
Сообщений: 21
03.12.2014, 11:49  [ТС]
Цитата Сообщение от raxp Посмотреть сообщение
Ряд простых полосовых фильтров с выводом на индикацию реализовать можно на раз, без FFT.
Еще бы разобраться как с этим работать??

Вот допустим, если я правильно понял, то сюда нужно передать данные с АЦП.
Прогнать через фильтр и вернуть результат..
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#define NZEROS 20
#define NPOLES 20
#define GAIN   5.501517666e+02
 
static float xv[NZEROS+1], yv[NPOLES+1];
 
static void filterloop()
  { for (;;)
      { xv[0] = xv[1]; xv[1] = xv[2]; xv[2] = xv[3]; xv[3] = xv[4]; xv[4] = xv[5]; xv[5] = xv[6]; xv[6] = xv[7]; xv[7] = xv[8]; xv[8] = xv[9]; xv[9] = xv[10]; xv[10] = xv[11]; xv[11] = xv[12]; xv[12] = xv[13]; xv[13] = xv[14]; xv[14] = xv[15]; xv[15] = xv[16]; xv[16] = xv[17]; xv[17] = xv[18]; xv[18] = xv[19]; xv[19] = xv[20]; 
        xv[20] = next input value / GAIN;
        yv[0] = yv[1]; yv[1] = yv[2]; yv[2] = yv[3]; yv[3] = yv[4]; yv[4] = yv[5]; yv[5] = yv[6]; yv[6] = yv[7]; yv[7] = yv[8]; yv[8] = yv[9]; yv[9] = yv[10]; yv[10] = yv[11]; yv[11] = yv[12]; yv[12] = yv[13]; yv[13] = yv[14]; yv[14] = yv[15]; yv[15] = yv[16]; yv[16] = yv[17]; yv[17] = yv[18]; yv[18] = yv[19]; yv[19] = yv[20]; 
        yv[20] =   (xv[0] + xv[20]) - 10 * (xv[2] + xv[18]) + 45 * (xv[4] + xv[16])
                     - 120 * (xv[6] + xv[14]) + 210 * (xv[8] + xv[12]) - 252 * xv[10]
                     + ( -0.5337070256 * yv[0]) + ( 10.9854838250 * yv[1])
                     + (-107.4361973700 * yv[2]) + (663.7906941300 * yv[3])
                     + (-2905.8333570000 * yv[4]) + (9580.5958879000 * yv[5])
                     + (-24684.5652740000 * yv[6]) + (50894.3341390000 * yv[7])
                     + (-85282.0551920000 * yv[8]) + (117287.5841200000 * yv[9])
                     + (-133113.1794300000 * yv[10]) + (124889.3141300000 * yv[11])
                     + (-96694.9793650000 * yv[12]) + (61445.2487740000 * yv[13])
                     + (-31733.3789550000 * yv[14]) + (13114.5824840000 * yv[15])
                     + (-4235.4805860000 * yv[16]) + (1030.2245790000 * yv[17])
                     + (-177.5491614800 * yv[18]) + ( 19.3309281140 * yv[19]);
        next output value = yv[20];
      }
  }

А вот что делать с этим куском и как вообще это использовать?
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
raw alpha1    =   0.0052083333
raw alpha2    =   0.0208333333
warped alpha1 =   0.0052087982
warped alpha2 =   0.0208631322
gain at dc    :   mag = 0.000000000e+00
gain at centre:   mag = 5.501517666e+02   phase =  -0.0282865278 pi
gain at hf    :   mag = 0.000000000e+00
 
S-plane zeros:
      0.0000000000 + j   0.0000000000   10 times
 
S-plane poles:
     -0.0122892600 + j   0.1298855945
     -0.0350914806 + j   0.1204662533
     -0.0525908506 + j   0.1026544204
     -0.0611947058 + j   0.0786339186
     -0.0568120095 + j   0.0530564123
     -0.0568120095 + j  -0.0530564123
     -0.0611947058 + j  -0.0786339186
     -0.0525908506 + j  -0.1026544204
     -0.0350914806 + j  -0.1204662533
     -0.0122892600 + j  -0.1298855945
     -0.0030974903 + j  -0.0327374767
     -0.0095626079 + j  -0.0328276701
     -0.0169595228 + j  -0.0331040470
     -0.0264438774 + j  -0.0339798301
     -0.0403361084 + j  -0.0376696620
     -0.0403361084 + j   0.0376696620
     -0.0264438774 + j   0.0339798301
     -0.0169595228 + j   0.0331040470
     -0.0095626079 + j   0.0328276701
     -0.0030974903 + j   0.0327374767
 
Z-plane zeros:
      1.0000000000 + j   0.0000000000   10 times
     -1.0000000000 + j   0.0000000000   10 times
 
Z-plane poles:
      0.9795386182 + j   0.1277716656
      0.9586505157 + j   0.1159413674
      0.9438945234 + j   0.0972182866
      0.9378018277 + j   0.0739265197
      0.9434640251 + j   0.0501325489
      0.9434640251 + j  -0.0501325489
      0.9378018277 + j  -0.0739265197
      0.9438945234 + j  -0.0972182866
      0.9586505157 + j  -0.1159413674
      0.9795386182 + j  -0.1277716656
      0.9963740529 + j  -0.0326275927
      0.9899518656 + j  -0.0325073143
      0.9826489916 + j  -0.0325409135
      0.9733463481 + j  -0.0330894797
      0.9597932888 + j  -0.0361826419
      0.9597932888 + j   0.0361826419
      0.9733463481 + j   0.0330894797
      0.9826489916 + j   0.0325409135
      0.9899518656 + j   0.0325073143
      0.9963740529 + j   0.0326275927
 
Recurrence relation:
y[n] = (  1 * x[n-20])
     + (  0 * x[n-19])
     + (-10 * x[n-18])
     + (  0 * x[n-17])
     + ( 45 * x[n-16])
     + (  0 * x[n-15])
     + (-120 * x[n-14])
     + (  0 * x[n-13])
     + (210 * x[n-12])
     + (  0 * x[n-11])
     + (-252 * x[n-10])
     + (  0 * x[n- 9])
     + (210 * x[n- 8])
     + (  0 * x[n- 7])
     + (-120 * x[n- 6])
     + (  0 * x[n- 5])
     + ( 45 * x[n- 4])
     + (  0 * x[n- 3])
     + (-10 * x[n- 2])
     + (  0 * x[n- 1])
     + (  1 * x[n- 0])
 
     + ( -0.5337070256 * y[n-20])
     + ( 10.9854838245 * y[n-19])
     + (-107.4361973723 * y[n-18])
     + (663.7906941262 * y[n-17])
     + (-2905.8333570449 * y[n-16])
     + (9580.5958878517 * y[n-15])
     + (-24684.5652740345 * y[n-14])
     + (50894.3341390607 * y[n-13])
     + (-85282.0551917508 * y[n-12])
     + (117287.5841229235 * y[n-11])
     + (-133113.1794313392 * y[n-10])
     + (124889.3141339719 * y[n- 9])
     + (-96694.9793654828 * y[n- 8])
     + (61445.2487738814 * y[n- 7])
     + (-31733.3789549295 * y[n- 6])
     + (13114.5824837862 * y[n- 5])
     + (-4235.4805860413 * y[n- 4])
     + (1030.2245789633 * y[n- 3])
     + (-177.5491614825 * y[n- 2])
     + ( 19.3309281140 * y[n- 1])

Если я все правильно понял, то частота будет обрезана в зависимости от фильтра..
Чет я совсем не догоняю, что да как!
Уж разжуйте мне пожалуйста, как этим пользоваться..
0
0 / 0 / 0
Регистрация: 28.06.2014
Сообщений: 21
04.12.2014, 22:17  [ТС]
Прошу прощения за глупый вопрос, но.......
Объясните мне, как данные с АЦП занести в несколько переменных и потом получить среднее значение?
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
04.12.2014, 22:28
К примеру, псевдокод:
Code
1
2
3
4
5
6
// скользящее окно с базой на три
 okno[0] = okno[1];
 okno[1] = okno[2];
 okno[2] = adc;
 
 adc_average = (okno[0] + okno[1] + okno[2])/3;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.12.2014, 22:28
Помогаю со студенческими работами здесь

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

10-ти полосный анализатор спектра
Доброго дня всем! Надумал я сделать анализатор спектра по материалам которые находятся тут http://sxima.at.ua/publ/10_ti_polosnyj_ ......

GSP-7830 - анализатор спектра
Добрый день! Подскажите пожалуйста, где и кому продать GSP-7830 - анализатор спектра. Оборудование специализированное, было приобретено...

сонограф (анализатор спектра) на stm
есть такая замечательная прога spectraplus, показывающая в реальном времени сонограмму звуков. если непонятно то вот картинка:...

Анализатор спектра на 128 полос
Всем привет. Нужен анализатор спектра для &quot;украшения&quot; колонок. Под дисплей 64*128 Недавно разобрал свою акустику и обнаружел, что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru