final coss

Dependencies:   FastAnalogIn HSI2RGBW_PWM NVIC_set_all_priorities mbed-dsp mbed

Fork of Seniales-Final by Ricardo Soto

Revision:
4:76ea7cc8fdbc
Parent:
3:6c9dabbb7261
--- a/main.cpp	Sun May 03 22:53:37 2015 +0000
+++ b/main.cpp	Tue Nov 17 19:00:17 2015 +0000
@@ -7,14 +7,10 @@
 
 //**********Declaraciones devariables para la silla****************
 
-DigitalOut EnableLeft(PTC9);//Salida que habilitara o deshabilitara el puente H de la llanta izquierda
-DigitalOut EnableRight(PTC8);//Salida que habilitara o deshabilitara el puente H de la llanta derecha
+DigitalOut menos(D2);//Salida que habilitara o deshabilitara el puente H de la llanta izquierda
+DigitalOut afinado(D3);
+DigitalOut mas(D4);//Salida que habilitara o deshabilitara el puente H de la llanta derecha
 
-DigitalOut RightControl1(PTA5);//Salidas que controlan los estados del puente H de la llanta derecha
-DigitalOut RightControl2(PTA4);
-
-DigitalOut LeftControl1(PTA12);//Salidas que controlan los estados del puente H de la llanta izquierda
-DigitalOut LeftControl2(PTD4);
 //*******************************************************
 
 Serial pc(USBTX, USBRX); //Se declaran los pines que se utilizarán para la comunicación serial mediante USB para debuggeo (PTA1 - RX, PTA2 - TX)
@@ -28,9 +24,9 @@
 //Estos valores puedne modificarse para modificar los parametros de la transformada
 ////////////////////////////////////////////////////////////////////////////////
 
-int SAMPLE_RATE_HZ = 40000;       // Frecuencian de muestreo en HZ del sistema
+int SAMPLE_RATE_HZ = 4000;       // Frecuencian de muestreo en HZ del sistema
 const int FFT_SIZE = 1024;           // Número de valores para la transformada rápida
-float freq = 40000.0/1024.0;           // Frecuencia de activación de la interrupción de muestreo
+float freq = 4000.0/1024.0;           // Frecuencia de activación de la interrupción de muestreo
 float max[2];                        // Arreglo que almacena la frecuencia y magnitud mayores del espectro de Fourier
 char blue_freq=0;                    // Variable que almacena el valor que se envia por bluetooth de los BPM
 
@@ -79,41 +75,7 @@
     return sampleCounter >= FFT_SIZE*2;
 }
 
-//************Funciones del funcionamiento de la silla
-void Avanzar(void){//Esta funcion tiene las salidas programadas para que la silla avance hace delante
-    RightControl1=0;
-    RightControl2=1;
-    LeftControl1=0;
-    LeftControl2=1;
-    EnableLeft=1;
-    EnableRight=1;
-    }
-    
-void Retroceder(void){//Esta funcion las salidas programadas para que la silla retroceda
-    RightControl1=1;
-    RightControl2=0;
-    LeftControl1=1;
-    LeftControl2=0;
-    EnableLeft=1;
-    EnableRight=1;
-    }
-void Derecha(void){//Esta funcion tiene las salidas programadas para que la silla avance a la derehca (apaga el motor derecho y enciende el motor izquierdo)
-    LeftControl1=0;
-    LeftControl2=1;
-    EnableLeft=1;
-    EnableRight=0;
-    }
-void Izquierda(void){//Esta funcion tiene las salidas programadas para que la silla avance a la izquierda (apaga el motor izquierdo y enciende el motor derecho)
-    RightControl1=0;
-    RightControl2=1;
-    EnableLeft=0;
-    EnableRight=1;
-    }
-void Alto(void){//Esta fucnion apaga los enables del puente H y por lo tanto la silla para
-    EnableLeft=0;
-    EnableRight=0;
-    }
-//************************************************
+
 
 ////////////////////////////////////////////////////////////////////////////////
 // MAIN DEL PROGRAMA
@@ -146,50 +108,54 @@
         S = & arm_cfft_sR_f32_len4096;
         break;
     }
+    pc.printf("hola");
 
     while(1) {
+        
         // Se calcula la FFT si se ha terminado el muestreo
         if (samplingIsDone()) {
             
             arm_cfft_f32(S, samples, 0, 1);
             arm_cmplx_mag_f32(samples, magnitudes, FFT_SIZE);
 
-            for (int i = 0; i < FFT_SIZE/2+1; ++i) {
-            //    pc.printf("%f, %f\r\n", i*freq, magnitudes[i]);  //Esta línea se activa solo si se desea conocer la magnitudes generada por la FFT
+            for (int i = 1; i < FFT_SIZE/2+1; ++i) {
+                //pc.printf("%f, %f\r\n", i*freq, magnitudes[i]);  //Esta línea se activa solo si se desea conocer la magnitudes generada por la FFT
                 //Sección de código que permite obtener el valor de frecuencia y magnitud mayor de los calculados
                 if (magnitudes[i]>max[1]){
                         max[0]=i*freq;
                         max[1]=magnitudes[i]; //Habilitar solo para debuggeo
                 }
             }
-             
+             //pc.printf("%f, %f\r\n",max[0], max[1]);
             //Dependiendo del valor de max[0], que representa la frecuencia natural, indicara la persona
             //que esta chiflando y la silla ejecutara una rutina especifica
-            if(max[0]<=1600 && max[0]>=1350){
-            
-                pc.printf("\n %f\n", max[0]); 
-                pc.printf("\nChifla Jessi\n");
-                Derecha();
-                wait(1);
-                Retroceder();
-                wait(1);
-                Alto();
-            } 
-            else if (max[0]<=3500 && max[0]>= 3000){
+            if ((max[0]<=113 && max[0]>= 107) || (max[0]<=225 && max[0]>= 215) || (max[0]<=335 && max[0]>= 325)){
                 
                 pc.printf("\n %f\n", max[0]); 
-                pc.printf("\nChifla Soto\n");
-                Avanzar();
-                wait(1);
-                Izquierda();
+                pc.printf("\nafinado\n");
+                afinado=1;
                 wait(1);
-                Alto();
+                afinado=0;
+              
+                
             } 
-            else if (max[0]<=2200 && max[0]>= 2500){
+            else if ((max[0]<=106 && max[0]>= 86) || (max[0]<=215 && max[0]>= 175) || (max[0]<=325 && max[0]>= 265)){
                    
-                   pc.printf("\n %f\n", max[0]); 
-                pc.printf("\nChifla Snais\n");
+                pc.printf("\n %f\n", max[0]); 
+                pc.printf("\n abajo \n");
+                menos=1;
+                wait(1);
+                menos=0;
             }
+            else if ((max[0]<=134 && max[0]>= 114) || (max[0]<=265 && max[0]>= 226) || (max[0]<=395 && max[0]>= 326)){
+                   
+                pc.printf("\n %f\n", max[0]); 
+                pc.printf("\n arriba \n");
+                mas=1;
+                wait(1);
+                mas=0;
+            }
+            
 
             //Se reinician las variables máximas
             max[0]=0;