FFT_BUENA
Dependencies: FastAnalogIn HSI2RGBW_PWM NVIC_set_all_priorities mbed-dsp mbed
Fork of KL25Z_FFT_Demo by
Diff: main.cpp
- Revision:
- 7:18e9a56bef9a
- Parent:
- 6:17a42dc976bb
- Child:
- 8:391e30708e7c
--- a/main.cpp Mon Dec 01 07:43:56 2014 +0000 +++ b/main.cpp Mon Dec 01 08:26:17 2014 +0000 @@ -320,12 +320,13 @@ float harm[512]; int inmax=0,max=0; + pulso=fmin+(fmax-fmin)*pot.read(); pc.printf("%f\n\n\n",pulso); l=30/pulso; b=(2*l)/0.11; qrs1=(a/(2*b))*(2-b); - + for(int i=1; i<=n; i=i+1) { @@ -388,6 +389,29 @@ while(1) { // Calculate FFT if a full sample is available. + + + if(abs(fmin+(fmax-fmin)*pot.read()-pulso)>.5) { + wait(2); + pulso=fmin+(fmax-fmin)*pot.read(); + pc.printf("\n\n\n%f\n\n\n",pulso); + l=30/pulso; + b=(2*l)/0.11; + qrs1=(a/(2*b))*(2-b); + + for(int i=1; i<=n; i=i+1) { + for(int j=0; j<512; j=j+1) { + harm[j]=(((2*b*a)/(i*i*pi*pi))*(1-cos((i*pi)/b)))*cos((i*pi*(j+1)*ts)/l); + } + for(int k=0; k<512; k=k+1) { + qrs2[k]=qrs2[k]+harm[k]; + } + } + // Begin sampling audio + samplingBegin(); + } + + if (samplingIsDone()) { @@ -398,11 +422,9 @@ arm_cmplx_mag_f32(samples, magnitudes, FFT_SIZE); - /*for(int i=0; i<512; i=i+1) { - pc.printf("%d\t%f\n",i,magnitudes[i]); - }*/ + for(int i=1; i<FFT_SIZE/2; i=i+1) { - if(magnitudes[i]>max&&abs(fs/(FFT_SIZE-1)*i*60-pulso)<10) { + if(magnitudes[i]>max&&abs(fs/(FFT_SIZE-1)*i*60-pulso)<8) { max=magnitudes[i]; inmax=i; } @@ -410,89 +432,90 @@ pulsocalculado=fs/(FFT_SIZE-1)*inmax*60; pc.printf("%f\n",pulsocalculado); - - if (pulsocalculado<(fmin+sum)){ - led1=1; - led2=0; - led3=0; - led4=0; - led5=0; - led6=0; - led7=0; - led8=0; - } - if (pulsocalculado>=(fmin+sum)&&pulsocalculado<(fmin+2*sum)){ - led1=1; - led2=1; - led3=0; - led4=0; - led5=0; - led6=0; - led7=0; - led8=0; - } - if (pulsocalculado>=(fmin+2*sum)&&pulsocalculado<(fmin+3*sum)){ - led1=1; - led2=1; - led3=1; - led4=0; - led5=0; - led6=0; - led7=0; - led8=0; - } - if (pulsocalculado>=(fmin+3*sum)&&pulsocalculado<(fmin+4*sum)){ - led1=1; - led2=1; - led3=1; - led4=1; - led5=0; - led6=0; - led7=0; - led8=0; - } - if (pulsocalculado>=(fmin+4*sum)&&pulsocalculado<(fmin+5*sum)){ - led1=1; - led2=1; - led3=1; - led4=1; - led5=1; - led6=0; - led7=0; - led8=0; - } - if (pulsocalculado>=(fmin+5*sum)&&pulsocalculado<(fmin+6*sum)){ - led1=1; - led2=1; - led3=1; - led4=1; - led5=1; - led6=1; - led7=0; - led8=0; - } - if (pulsocalculado>=(fmin+6*sum)&&pulsocalculado<(fmin+7*sum)){ - led1=1; - led2=1; - led3=1; - led4=1; - led5=1; - led6=1; - led7=1; - led8=0; - } - if (pulsocalculado>=(fmin+7*sum)){ - led1=1; - led2=1; - led3=1; - led4=1; - led5=1; - led6=1; - led7=1; - led8=1; - } - + + if (pulsocalculado<(fmin+sum)) { + led1=1; + led2=0; + led3=0; + led4=0; + led5=0; + led6=0; + led7=0; + led8=0; + } + if (pulsocalculado>=(fmin+sum)&&pulsocalculado<(fmin+2*sum)) { + led1=1; + led2=1; + led3=0; + led4=0; + led5=0; + led6=0; + led7=0; + led8=0; + } + if (pulsocalculado>=(fmin+2*sum)&&pulsocalculado<(fmin+3*sum)) { + led1=1; + led2=1; + led3=1; + led4=0; + led5=0; + led6=0; + led7=0; + led8=0; + } + if (pulsocalculado>=(fmin+3*sum)&&pulsocalculado<(fmin+4*sum)) { + led1=1; + led2=1; + led3=1; + led4=1; + led5=0; + led6=0; + led7=0; + led8=0; + } + if (pulsocalculado>=(fmin+4*sum)&&pulsocalculado<(fmin+5*sum)) { + led1=1; + led2=1; + led3=1; + led4=1; + led5=1; + led6=0; + led7=0; + led8=0; + } + if (pulsocalculado>=(fmin+5*sum)&&pulsocalculado<(fmin+6*sum)) { + led1=1; + led2=1; + led3=1; + led4=1; + led5=1; + led6=1; + led7=0; + led8=0; + } + if (pulsocalculado>=(fmin+6*sum)&&pulsocalculado<(fmin+7*sum)) { + led1=1; + led2=1; + led3=1; + led4=1; + led5=1; + led6=1; + led7=1; + led8=0; + } + if (pulsocalculado>=(fmin+7*sum)) { + led1=1; + led2=1; + led3=1; + led4=1; + led5=1; + led6=1; + led7=1; + led8=1; + } + inmax=0; + max=0; if (LEDS_ENABLED == 1) { spectrumLoop();