FFT_BUENA

Dependencies:   FastAnalogIn HSI2RGBW_PWM NVIC_set_all_priorities mbed-dsp mbed

Fork of KL25Z_FFT_Demo by Frank Vannieuwkerke

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();