final coss
Dependencies: FastAnalogIn HSI2RGBW_PWM NVIC_set_all_priorities mbed-dsp mbed
Fork of Seniales-Final by
Diff: main.cpp
- 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;