From b710fed79bcb3285a62a88cd626cf0e9f82d99cf Mon Sep 17 00:00:00 2001 From: Jonathan Wyss Date: Wed, 28 Feb 2024 22:52:37 +0100 Subject: [PATCH] with fft --- main.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 70 insertions(+), 11 deletions(-) diff --git a/main.c b/main.c index d23b7d9..92fce69 100644 --- a/main.c +++ b/main.c @@ -8,13 +8,33 @@ #include"light_ws2812_AVR/Light_WS2812/light_ws2812.h" -#define STARTADC ADCSRA |= _BS(ADSC) +#define STARTADC ADCSRA |= (1< 16 bins +// +//1-7.8 - ca 130hz +//2- 255hz +//3- 380 +//4- 505 +//5- 630 +//6- 755 +//7- 880 +//8- 1kHz int main (void) { - int i; + int i,i2; int colorb; + int colora; + int avg; char sample[128]; char im[128]; struct cRGB led_bar1[8]; @@ -27,19 +47,51 @@ int main (void) led_bar1[i].b=0; } + while(1) { //######RECORD SAMPLES####### for(i=0;i<128;i++) - { - sample[i] = ADCH; //read Analog value register 8bit + { + + STARTADC; + sample[i] = (ADCH-128)*2; //read Analog value register 8bit center -128 im[i]=0; //pseudo data for funciton } fix_fft(sample,im,7,0);//im[i] is always zero +//####Averaging Data#### +// + for(i2=0;i2<128;i2++) + { + + sample[i2] = sqrt(sample[i2] * sample[i2] + im[i2]* im[i2]); + } for(i=0;i<8;i++) { - for(colorb=0;colorb<256;colorb++) + for(i2=1;i2<=16;i2++) + { + sample[i] = (sample[i] + sample[i*16+i2])/2; + } + //avg written to sample[0..7] + //contains values scaled to int boundarys + //scale them to 0..256 + sample[i]= map(sample[i],0,30,0,255); + led_bar1[i].r=0;;led_bar1[i].b=0; + //if(sample[i]<2) sample[i]=2; + led_bar1[i].g=sample[i]; + + } + + + + ws2812_setleds((uint8_t *)led_bar1,8); + } + + // _delay_ms(50); +// for(i=0;i<8;i++) +// { + /* for(colorb=0;colorb<256;colorb++) { led_bar1[i].r=10;led_bar1[i].g=colorb;led_bar1[i].b=0; ws2812_sendarray((uint8_t *)led_bar1,8*3); @@ -52,15 +104,22 @@ int main (void) ws2812_sendarray((uint8_t *)led_bar1,8*3); _delay_ms(1); - } - led_bar1[0].r=0;led_bar1[0].g=100;led_bar1[0].b=10; + }*/ + /*led_bar1[0].r=0;led_bar1[0].g=100;led_bar1[0].b=10; ws2812_sendarray((uint8_t *)led_bar1,8*3); - _delay_ms(50); + _delay_ms(50); led_bar1[0].r=255;led_bar1[0].g=0;led_bar1[0].b=10; - ws2812_sendarray((uint8_t *)led_bar1,8*3); + ws2812_sendarray((uint8_t *)led_bar1,8*3); */ + + +// } + - } - } return 0; } + +int map(int value, int old_min, int old_max,int new_min, int new_max) +{ + return (new_max/old_max*value); +}