fft_led/main.c

67 lines
1.5 KiB
C

#define F_CPU 16000000UL
#include<util/delay.h>
#include<avr/io.h>
#include"fix_fft.h"
#include"avr_adc.h"
#include"light_ws2812_AVR/Light_WS2812/ws2812_config.h"
#include"light_ws2812_AVR/Light_WS2812/light_ws2812.h"
#define STARTADC ADCSRA |= _BS(ADSC)
#define PB_mic PB0
int main (void)
{
int i;
int colorb;
char sample[128];
char im[128];
struct cRGB led_bar1[8];
//DDRB = (1<<mic);//would be setting output, default is input so no need for setting
setupADC();
for(i=0;i<8;i++)
{
led_bar1[i].r=0;
led_bar1[i].g=0;
led_bar1[i].b=0;
}
while(1)
{
//######RECORD SAMPLES#######
for(i=0;i<128;i++)
{
sample[i] = ADCH; //read Analog value register 8bit
im[i]=0; //pseudo data for funciton
}
fix_fft(sample,im,7,0);//im[i] is always zero
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);
_delay_ms(1);
}
for(colorb=256;colorb>0;colorb--)
{
led_bar1[i].r=0;led_bar1[i].g=colorb;led_bar1[i].b=10;
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;
ws2812_sendarray((uint8_t *)led_bar1,8*3);
_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);
}
}
return 0;
}