Libreria principal del graficador de bode
GraficadorDeBode.cpp@0:1f97d368029f, 2018-12-06 (annotated)
- Committer:
- JAgustinOtero
- Date:
- Thu Dec 06 00:07:02 2018 +0000
- Revision:
- 0:1f97d368029f
LIbreria principal
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JAgustinOtero | 0:1f97d368029f | 1 | /* |
JAgustinOtero | 0:1f97d368029f | 2 | Libreria principal: |
JAgustinOtero | 0:1f97d368029f | 3 | en la misma se juntan las funciones de muestreo y toma de datos con las funciones de graficos |
JAgustinOtero | 0:1f97d368029f | 4 | para poder muestrear en display los datos analizados |
JAgustinOtero | 0:1f97d368029f | 5 | |
JAgustinOtero | 0:1f97d368029f | 6 | |
JAgustinOtero | 0:1f97d368029f | 7 | */ |
JAgustinOtero | 0:1f97d368029f | 8 | |
JAgustinOtero | 0:1f97d368029f | 9 | #include "mbed.h" |
JAgustinOtero | 0:1f97d368029f | 10 | #include "math.h" |
JAgustinOtero | 0:1f97d368029f | 11 | #include "st7920.h" |
JAgustinOtero | 0:1f97d368029f | 12 | #include "ST7920Libreries.h" |
JAgustinOtero | 0:1f97d368029f | 13 | #include "GraficadorDeBode.h" |
JAgustinOtero | 0:1f97d368029f | 14 | #include "AD9833.h" |
JAgustinOtero | 0:1f97d368029f | 15 | #include "math.h" |
JAgustinOtero | 0:1f97d368029f | 16 | #include "string.h" |
JAgustinOtero | 0:1f97d368029f | 17 | #include "hal.h" |
JAgustinOtero | 0:1f97d368029f | 18 | |
JAgustinOtero | 0:1f97d368029f | 19 | #define Rango 100000 |
JAgustinOtero | 0:1f97d368029f | 20 | |
JAgustinOtero | 0:1f97d368029f | 21 | #define R 1000.0 |
JAgustinOtero | 0:1f97d368029f | 22 | #define C 1.0*pow(10.0,-6.0) |
JAgustinOtero | 0:1f97d368029f | 23 | |
JAgustinOtero | 0:1f97d368029f | 24 | #define K pow(10.0,potencia) |
JAgustinOtero | 0:1f97d368029f | 25 | |
JAgustinOtero | 0:1f97d368029f | 26 | enum {graficoComp, menuPrincipal, menuZoom, Info}; |
JAgustinOtero | 0:1f97d368029f | 27 | enum {graficocompleto, zoom}; |
JAgustinOtero | 0:1f97d368029f | 28 | enum {deshabilitado, habilitado}; |
JAgustinOtero | 0:1f97d368029f | 29 | enum {HDTexto, GraficoCompleto, Zoom, TomarMediciones, FaseAngulo, InfoAdicional}; |
JAgustinOtero | 0:1f97d368029f | 30 | |
JAgustinOtero | 0:1f97d368029f | 31 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 32 | //////////// PUERTOS ///////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 33 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 34 | Serial PC(USBTX,USBRX,115200); |
JAgustinOtero | 0:1f97d368029f | 35 | DigitalIn PULSADORMENU(PTC17); |
JAgustinOtero | 0:1f97d368029f | 36 | DigitalIn PULSADORRIGHT(PTA17); |
JAgustinOtero | 0:1f97d368029f | 37 | DigitalIn PULSADORLEFT(PTD2); |
JAgustinOtero | 0:1f97d368029f | 38 | DigitalIn PULSADORDOWN(PTA16); |
JAgustinOtero | 0:1f97d368029f | 39 | DigitalIn PULSADORUP(PTD3); |
JAgustinOtero | 0:1f97d368029f | 40 | DigitalIn FLANCOENTRADA(PTE20); |
JAgustinOtero | 0:1f97d368029f | 41 | DigitalIn FLANCOSALIDA(PTE21); |
JAgustinOtero | 0:1f97d368029f | 42 | AnalogIn ADC (PTC2); |
JAgustinOtero | 0:1f97d368029f | 43 | AnalogIn ADC2 (PTC1); |
JAgustinOtero | 0:1f97d368029f | 44 | DigitalOut A (PTB8); |
JAgustinOtero | 0:1f97d368029f | 45 | DigitalOut B (PTB9); |
JAgustinOtero | 0:1f97d368029f | 46 | //DigitalOut MC (PTB10); |
JAgustinOtero | 0:1f97d368029f | 47 | DigitalOut HOLA(PTE29); |
JAgustinOtero | 0:1f97d368029f | 48 | DigitalOut HOLA2(PTE30); |
JAgustinOtero | 0:1f97d368029f | 49 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 50 | //////////// VARIABLES /////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 51 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 52 | volatile char mode_rx_diff; // flag |
JAgustinOtero | 0:1f97d368029f | 53 | unsigned char hab=0; |
JAgustinOtero | 0:1f97d368029f | 54 | unsigned int cantMediciones=114; |
JAgustinOtero | 0:1f97d368029f | 55 | uint32_t diff; |
JAgustinOtero | 0:1f97d368029f | 56 | unsigned char opcion=0; |
JAgustinOtero | 0:1f97d368029f | 57 | unsigned char screen=0; |
JAgustinOtero | 0:1f97d368029f | 58 | /*screen=3 menu 2 |
JAgustinOtero | 0:1f97d368029f | 59 | screen=2 ZOOM |
JAgustinOtero | 0:1f97d368029f | 60 | screen=1 menu |
JAgustinOtero | 0:1f97d368029f | 61 | screen=0 grafico*/ |
JAgustinOtero | 0:1f97d368029f | 62 | unsigned char grafico_var=0; |
JAgustinOtero | 0:1f97d368029f | 63 | /*grafico_var=0 grafico completo |
JAgustinOtero | 0:1f97d368029f | 64 | grafico_var=1 Zoom*/ |
JAgustinOtero | 0:1f97d368029f | 65 | unsigned char text_var=1; |
JAgustinOtero | 0:1f97d368029f | 66 | /*texto habilitado/deshabilitado*/ |
JAgustinOtero | 0:1f97d368029f | 67 | unsigned char neg=0,pos=0,polpantalla[6]= {2,2,2,2,2,2}; |
JAgustinOtero | 0:1f97d368029f | 68 | unsigned char ZOOM=0; |
JAgustinOtero | 0:1f97d368029f | 69 | float tiempo = 0; |
JAgustinOtero | 0:1f97d368029f | 70 | unsigned char modo=fase; |
JAgustinOtero | 0:1f97d368029f | 71 | unsigned char habgrafico=0; |
JAgustinOtero | 0:1f97d368029f | 72 | unsigned char corte=0; |
JAgustinOtero | 0:1f97d368029f | 73 | float defasaje[108]= {0}; |
JAgustinOtero | 0:1f97d368029f | 74 | float defasaje_aux=0; |
JAgustinOtero | 0:1f97d368029f | 75 | float gananciadB[108]= {0}; |
JAgustinOtero | 0:1f97d368029f | 76 | float ganancia[108] = {0}; |
JAgustinOtero | 0:1f97d368029f | 77 | float frecuencias[108]= { |
JAgustinOtero | 0:1f97d368029f | 78 | 1,1,1,1,2,2,2,2,3,3,3,4,5,6,7,8,9, |
JAgustinOtero | 0:1f97d368029f | 79 | 11,12,14,16,18,20,23,26,29,33,37,42,48,54,61,69,78,88, |
JAgustinOtero | 0:1f97d368029f | 80 | 112,127,143,162,183,206,233,263,297,335,379,428,483,545,615,695,784,885, |
JAgustinOtero | 0:1f97d368029f | 81 | 1128,1274,1483,1623,1832,2069,2335,2636,2975,3359,3792,4281,4832,5455,6158,6951,7847,8858, |
JAgustinOtero | 0:1f97d368029f | 82 | 11288,12742,14384,16237,18329,20691,23357,26366,29763,33598,37926,42813,48329,54555,61584,69519,78476,88586, |
JAgustinOtero | 0:1f97d368029f | 83 | 112883,127427,143844,162377,183298,206913,233572,263665,297635,335981,379269,428133,483293,545559,615848,695192,784759,885866 |
JAgustinOtero | 0:1f97d368029f | 84 | }; |
JAgustinOtero | 0:1f97d368029f | 85 | char fcVector[7]= {0}; |
JAgustinOtero | 0:1f97d368029f | 86 | float VMax=0; |
JAgustinOtero | 0:1f97d368029f | 87 | unsigned char fc_var=0; |
JAgustinOtero | 0:1f97d368029f | 88 | unsigned char fcVal=0; |
JAgustinOtero | 0:1f97d368029f | 89 | unsigned char MULTIPLEXOR=4; |
JAgustinOtero | 0:1f97d368029f | 90 | float muestras=0; |
JAgustinOtero | 0:1f97d368029f | 91 | float var_aux_muestras=0; |
JAgustinOtero | 0:1f97d368029f | 92 | float Vref=1/sqrt(2.0); |
JAgustinOtero | 0:1f97d368029f | 93 | unsigned int k=0; |
JAgustinOtero | 0:1f97d368029f | 94 | uint16_t var_fase=0; |
JAgustinOtero | 0:1f97d368029f | 95 | unsigned char hab_tiempo=0; |
JAgustinOtero | 0:1f97d368029f | 96 | |
JAgustinOtero | 0:1f97d368029f | 97 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 98 | //////////// FUNCIONES /////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 99 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 100 | |
JAgustinOtero | 0:1f97d368029f | 101 | /*realiza un barrido en frecuencia y toma valores tanto de modulo como de fase |
JAgustinOtero | 0:1f97d368029f | 102 | a su vez tambien varia la ganancia del modulo |
JAgustinOtero | 0:1f97d368029f | 103 | */ |
JAgustinOtero | 0:1f97d368029f | 104 | void barridoEnFrecuencia0a9(unsigned char i) |
JAgustinOtero | 0:1f97d368029f | 105 | { |
JAgustinOtero | 0:1f97d368029f | 106 | unsigned int k=0; |
JAgustinOtero | 0:1f97d368029f | 107 | unsigned int j=0; |
JAgustinOtero | 0:1f97d368029f | 108 | setFreq(frecuencias[i]); |
JAgustinOtero | 0:1f97d368029f | 109 | wait(0.4); |
JAgustinOtero | 0:1f97d368029f | 110 | |
JAgustinOtero | 0:1f97d368029f | 111 | /*medicion de MODULO*/ |
JAgustinOtero | 0:1f97d368029f | 112 | /*para frecuencias menores a 10Hz realiza un muestreo de 30000 muestras*/ |
JAgustinOtero | 0:1f97d368029f | 113 | if(i<1) { |
JAgustinOtero | 0:1f97d368029f | 114 | MULTIPLEXOR=0; |
JAgustinOtero | 0:1f97d368029f | 115 | A=(MULTIPLEXOR) & 1; |
JAgustinOtero | 0:1f97d368029f | 116 | B=(MULTIPLEXOR & 2) >> 1; |
JAgustinOtero | 0:1f97d368029f | 117 | //MC=(MULTIPLEXOR & 4) >> 2; |
JAgustinOtero | 0:1f97d368029f | 118 | wait(0.5); |
JAgustinOtero | 0:1f97d368029f | 119 | } |
JAgustinOtero | 0:1f97d368029f | 120 | if(ganancia[i-1]>0.7) { |
JAgustinOtero | 0:1f97d368029f | 121 | if(MULTIPLEXOR>0)MULTIPLEXOR--; |
JAgustinOtero | 0:1f97d368029f | 122 | A=(MULTIPLEXOR) & 1; |
JAgustinOtero | 0:1f97d368029f | 123 | B=((MULTIPLEXOR) & 2) >> 1; |
JAgustinOtero | 0:1f97d368029f | 124 | //MC=((MULTIPLEXOR) & 4) >> 2; |
JAgustinOtero | 0:1f97d368029f | 125 | wait(0.5); |
JAgustinOtero | 0:1f97d368029f | 126 | } else if (ganancia[i-1]<0.075) { |
JAgustinOtero | 0:1f97d368029f | 127 | if(MULTIPLEXOR<2)MULTIPLEXOR++; |
JAgustinOtero | 0:1f97d368029f | 128 | A=(MULTIPLEXOR) & 1; |
JAgustinOtero | 0:1f97d368029f | 129 | B=((MULTIPLEXOR) & 2) >> 1; |
JAgustinOtero | 0:1f97d368029f | 130 | //MC=((MULTIPLEXOR) & 4) >> 2; |
JAgustinOtero | 0:1f97d368029f | 131 | wait(0.5); |
JAgustinOtero | 0:1f97d368029f | 132 | } |
JAgustinOtero | 0:1f97d368029f | 133 | if(MULTIPLEXOR == 0 )Vref=1/1.4; |
JAgustinOtero | 0:1f97d368029f | 134 | else if(MULTIPLEXOR == 1 )Vref=10/1.4; |
JAgustinOtero | 0:1f97d368029f | 135 | else if(MULTIPLEXOR == 2 )Vref=100/1.4; |
JAgustinOtero | 0:1f97d368029f | 136 | //else if(MULTIPLEXOR == 3 )Vref=0.1/sqrt(2.0); |
JAgustinOtero | 0:1f97d368029f | 137 | //else if(MULTIPLEXOR == 4 )Vref=0.01/sqrt(2.0); |
JAgustinOtero | 0:1f97d368029f | 138 | ganancia[i]=0; |
JAgustinOtero | 0:1f97d368029f | 139 | if(i>=18){ |
JAgustinOtero | 0:1f97d368029f | 140 | /*for(unsigned int l=0; l<3; l++) { |
JAgustinOtero | 0:1f97d368029f | 141 | ganancia[i] += ADC.read(); |
JAgustinOtero | 0:1f97d368029f | 142 | } |
JAgustinOtero | 0:1f97d368029f | 143 | ganancia[i]=ganancia[i]/3.0;*/ |
JAgustinOtero | 0:1f97d368029f | 144 | ganancia[i] = ADC.read(); |
JAgustinOtero | 0:1f97d368029f | 145 | } |
JAgustinOtero | 0:1f97d368029f | 146 | else if(i<18) { |
JAgustinOtero | 0:1f97d368029f | 147 | |
JAgustinOtero | 0:1f97d368029f | 148 | for(k=0; k<30000; k++) { |
JAgustinOtero | 0:1f97d368029f | 149 | var_aux_muestras=ADC2.read(); |
JAgustinOtero | 0:1f97d368029f | 150 | if(var_aux_muestras > muestras)muestras = var_aux_muestras; |
JAgustinOtero | 0:1f97d368029f | 151 | } |
JAgustinOtero | 0:1f97d368029f | 152 | ganancia[i] = muestras; |
JAgustinOtero | 0:1f97d368029f | 153 | } |
JAgustinOtero | 0:1f97d368029f | 154 | muestras=0; |
JAgustinOtero | 0:1f97d368029f | 155 | k=0; |
JAgustinOtero | 0:1f97d368029f | 156 | gananciadB[i] = 20 * log10( 3.3 * ganancia[i] / (float)Vref); |
JAgustinOtero | 0:1f97d368029f | 157 | if(gananciadB[i]>60)gananciadB[i]=60; |
JAgustinOtero | 0:1f97d368029f | 158 | else if(gananciadB[i]<-60)gananciadB[i]=-60; |
JAgustinOtero | 0:1f97d368029f | 159 | if(gananciadB[i]<-19 && gananciadB[i]>-21)corte=i; |
JAgustinOtero | 0:1f97d368029f | 160 | |
JAgustinOtero | 0:1f97d368029f | 161 | /*medicion de FASE*/ |
JAgustinOtero | 0:1f97d368029f | 162 | /*Realiza un promedio entre 3 valores de la misma frecuencia*/ |
JAgustinOtero | 0:1f97d368029f | 163 | defasaje[i]=0; |
JAgustinOtero | 0:1f97d368029f | 164 | if(gananciadB[i]>-30) { |
JAgustinOtero | 0:1f97d368029f | 165 | //HOLA=1; |
JAgustinOtero | 0:1f97d368029f | 166 | |
JAgustinOtero | 0:1f97d368029f | 167 | new_tx_value=0; |
JAgustinOtero | 0:1f97d368029f | 168 | new_rx_value=0; |
JAgustinOtero | 0:1f97d368029f | 169 | |
JAgustinOtero | 0:1f97d368029f | 170 | while(1) { |
JAgustinOtero | 0:1f97d368029f | 171 | uint32_t diff; |
JAgustinOtero | 0:1f97d368029f | 172 | |
JAgustinOtero | 0:1f97d368029f | 173 | if (new_tx_value==1) { |
JAgustinOtero | 0:1f97d368029f | 174 | /*HOLA=1; |
JAgustinOtero | 0:1f97d368029f | 175 | HOLA=0;*/ |
JAgustinOtero | 0:1f97d368029f | 176 | hab=2; |
JAgustinOtero | 0:1f97d368029f | 177 | |
JAgustinOtero | 0:1f97d368029f | 178 | } |
JAgustinOtero | 0:1f97d368029f | 179 | if(new_rx_value==1 && hab==2) { |
JAgustinOtero | 0:1f97d368029f | 180 | /*HOLA2=1; |
JAgustinOtero | 0:1f97d368029f | 181 | HOLA2=0;*/ |
JAgustinOtero | 0:1f97d368029f | 182 | hab=1; |
JAgustinOtero | 0:1f97d368029f | 183 | |
JAgustinOtero | 0:1f97d368029f | 184 | } |
JAgustinOtero | 0:1f97d368029f | 185 | if(hab==1) { |
JAgustinOtero | 0:1f97d368029f | 186 | diff = rx_pin_captured_value - tx_pin_captured_value; |
JAgustinOtero | 0:1f97d368029f | 187 | if((diff / TICKS_PER_MS) < 1000000) { |
JAgustinOtero | 0:1f97d368029f | 188 | defasaje[i]+=(diff/TICKS_PER_MS) * 360.0 / 1000.0 * frecuencias[i]; |
JAgustinOtero | 0:1f97d368029f | 189 | //printf("%.1fHz : %.2fº\n" ,frecuencias[i],defasaje[i] ); |
JAgustinOtero | 0:1f97d368029f | 190 | } |
JAgustinOtero | 0:1f97d368029f | 191 | hab=0; |
JAgustinOtero | 0:1f97d368029f | 192 | j++; |
JAgustinOtero | 0:1f97d368029f | 193 | setFreq(frecuencias[i]); |
JAgustinOtero | 0:1f97d368029f | 194 | wait(0.3); |
JAgustinOtero | 0:1f97d368029f | 195 | if(j>=3)break; |
JAgustinOtero | 0:1f97d368029f | 196 | |
JAgustinOtero | 0:1f97d368029f | 197 | } |
JAgustinOtero | 0:1f97d368029f | 198 | |
JAgustinOtero | 0:1f97d368029f | 199 | new_tx_value=0; |
JAgustinOtero | 0:1f97d368029f | 200 | new_rx_value=0; |
JAgustinOtero | 0:1f97d368029f | 201 | } |
JAgustinOtero | 0:1f97d368029f | 202 | } else defasaje[i] = 1190; /*descarta cualquier valor de fase que corresponda a un valor de frecuencia cuya ganancia sea menor a -20dB*/ |
JAgustinOtero | 0:1f97d368029f | 203 | if(defasaje[i]<1180)defasaje[i]=defasaje[i]/3.0; |
JAgustinOtero | 0:1f97d368029f | 204 | |
JAgustinOtero | 0:1f97d368029f | 205 | j=0; |
JAgustinOtero | 0:1f97d368029f | 206 | } |
JAgustinOtero | 0:1f97d368029f | 207 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 208 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 209 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 210 | void grafico() |
JAgustinOtero | 0:1f97d368029f | 211 | { |
JAgustinOtero | 0:1f97d368029f | 212 | /*grafica los ejes cartecianos con los valores de modulo y fase segun corresponda(Solo luego de tomar una primer medicion)*/ |
JAgustinOtero | 0:1f97d368029f | 213 | Vline(0 , 10 , 64 , 1); |
JAgustinOtero | 0:1f97d368029f | 214 | Hline(0 , 32 , 127 , 1); |
JAgustinOtero | 0:1f97d368029f | 215 | DivisionesEjeY(2 , 10 , 6 , 10 , 3 , 1); |
JAgustinOtero | 0:1f97d368029f | 216 | DivisionesEjeX(10 , 19 , 6 , 32 , 3 , 1); |
JAgustinOtero | 0:1f97d368029f | 217 | if(text_var==1) { |
JAgustinOtero | 0:1f97d368029f | 218 | TextoEjeY(modo,0); |
JAgustinOtero | 0:1f97d368029f | 219 | TextoEjeX(0); |
JAgustinOtero | 0:1f97d368029f | 220 | } |
JAgustinOtero | 0:1f97d368029f | 221 | flechaY(2 , 32, 0 ,1); |
JAgustinOtero | 0:1f97d368029f | 222 | flechaY(125 , 32, 1 ,1); |
JAgustinOtero | 0:1f97d368029f | 223 | if(habgrafico==1) { |
JAgustinOtero | 0:1f97d368029f | 224 | graficarcompleto(gananciadB); |
JAgustinOtero | 0:1f97d368029f | 225 | if(modo==fase) { |
JAgustinOtero | 0:1f97d368029f | 226 | Vline(0,12+corte,63,1); |
JAgustinOtero | 0:1f97d368029f | 227 | for(unsigned int i = 0; i<32; i++) { |
JAgustinOtero | 0:1f97d368029f | 228 | point(12+18,i*2,0); } |
JAgustinOtero | 0:1f97d368029f | 229 | Vline(0,12+corte,63,1); |
JAgustinOtero | 0:1f97d368029f | 230 | for(unsigned int i = 0; i<32; i++) { |
JAgustinOtero | 0:1f97d368029f | 231 | point(12+18,i*2,0); |
JAgustinOtero | 0:1f97d368029f | 232 | } |
JAgustinOtero | 0:1f97d368029f | 233 | } |
JAgustinOtero | 0:1f97d368029f | 234 | } |
JAgustinOtero | 0:1f97d368029f | 235 | } |
JAgustinOtero | 0:1f97d368029f | 236 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 237 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 238 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 239 | void polaridad() |
JAgustinOtero | 0:1f97d368029f | 240 | { |
JAgustinOtero | 0:1f97d368029f | 241 | /*Analiza si los valores de cierto rango de frecuencia estan por encima de 0, por debajo de 0 o ambos*/ |
JAgustinOtero | 0:1f97d368029f | 242 | if(modo==modulo) { |
JAgustinOtero | 0:1f97d368029f | 243 | for(unsigned int j=0 ; j<6 ; j++) { |
JAgustinOtero | 0:1f97d368029f | 244 | for(unsigned int i=0 ; i <= (cantMediciones / 6) ; i++ ) { |
JAgustinOtero | 0:1f97d368029f | 245 | /*----------------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 246 | if(gananciadB[(j*(cantMediciones/6))+i]>=0)pos++; |
JAgustinOtero | 0:1f97d368029f | 247 | |
JAgustinOtero | 0:1f97d368029f | 248 | if(gananciadB[(j*(cantMediciones/6))+i]<0)neg++; |
JAgustinOtero | 0:1f97d368029f | 249 | /*----------------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 250 | if(pos>=(cantMediciones/6)-1) polpantalla[j]=0; |
JAgustinOtero | 0:1f97d368029f | 251 | |
JAgustinOtero | 0:1f97d368029f | 252 | else if(neg>=(cantMediciones/6)-1) polpantalla[j]=1; |
JAgustinOtero | 0:1f97d368029f | 253 | |
JAgustinOtero | 0:1f97d368029f | 254 | else polpantalla[j]=2; |
JAgustinOtero | 0:1f97d368029f | 255 | } |
JAgustinOtero | 0:1f97d368029f | 256 | } |
JAgustinOtero | 0:1f97d368029f | 257 | } |
JAgustinOtero | 0:1f97d368029f | 258 | if(modo==fase) { |
JAgustinOtero | 0:1f97d368029f | 259 | for(unsigned int j=0 ; j<6 ; j++) { |
JAgustinOtero | 0:1f97d368029f | 260 | for(unsigned int i=0 ; i <= (cantMediciones / 6) ; i++ ) { |
JAgustinOtero | 0:1f97d368029f | 261 | /*----------------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 262 | if(gananciadB[(j*(cantMediciones/6))+i]>=0)pos++; |
JAgustinOtero | 0:1f97d368029f | 263 | |
JAgustinOtero | 0:1f97d368029f | 264 | if(gananciadB[(j*(cantMediciones/6))+i]<0)neg++; |
JAgustinOtero | 0:1f97d368029f | 265 | /*----------------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 266 | if(pos>=(cantMediciones/6)-1) polpantalla[j]=0; |
JAgustinOtero | 0:1f97d368029f | 267 | |
JAgustinOtero | 0:1f97d368029f | 268 | else if(neg>=(cantMediciones/6)-1) polpantalla[j]=1; |
JAgustinOtero | 0:1f97d368029f | 269 | |
JAgustinOtero | 0:1f97d368029f | 270 | else polpantalla[j]=2; |
JAgustinOtero | 0:1f97d368029f | 271 | } |
JAgustinOtero | 0:1f97d368029f | 272 | } |
JAgustinOtero | 0:1f97d368029f | 273 | } |
JAgustinOtero | 0:1f97d368029f | 274 | neg=0; |
JAgustinOtero | 0:1f97d368029f | 275 | pos=0; |
JAgustinOtero | 0:1f97d368029f | 276 | |
JAgustinOtero | 0:1f97d368029f | 277 | } |
JAgustinOtero | 0:1f97d368029f | 278 | |
JAgustinOtero | 0:1f97d368029f | 279 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 280 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 281 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 282 | /*Calcula la frecuencia de corte*/ |
JAgustinOtero | 0:1f97d368029f | 283 | void FrecuenciaDeCorte() |
JAgustinOtero | 0:1f97d368029f | 284 | { |
JAgustinOtero | 0:1f97d368029f | 285 | unsigned long fc = 0; |
JAgustinOtero | 0:1f97d368029f | 286 | char InfoFc[9]= {'L','A',' ','F','C',' ','E','S',' '}; |
JAgustinOtero | 0:1f97d368029f | 287 | for(fcVal=0 ; fcVal<cantMediciones; fcVal++) { |
JAgustinOtero | 0:1f97d368029f | 288 | if(gananciadB[fcVal] > VMax-4 && gananciadB[fcVal] < VMax-2) break; |
JAgustinOtero | 0:1f97d368029f | 289 | } |
JAgustinOtero | 0:1f97d368029f | 290 | fc = frecuencias[fcVal]; |
JAgustinOtero | 0:1f97d368029f | 291 | fcVector[0] = fc / 100000 + 48; |
JAgustinOtero | 0:1f97d368029f | 292 | fcVector[1] = (fc / 10000) - ((fcVector[0] - 48) * 10) + 48; |
JAgustinOtero | 0:1f97d368029f | 293 | fcVector[2] = ((fc / 1000) - ((fcVector[1] - 48) * 10)) - ((fcVector[0] - 48) * 100) + 48; |
JAgustinOtero | 0:1f97d368029f | 294 | fcVector[3] = (((fc / 100) - ((fcVector[2] - 48) * 10)) - ((fcVector[1] - 48) * 100)) - ((fcVector[0] - 48) * 1000) + 48; |
JAgustinOtero | 0:1f97d368029f | 295 | fcVector[4] = ((((fc / 10) - ((fcVector[3] - 48) * 10)) - ((fcVector[2] - 48) * 100)) - ((fcVector[1] - 48) * 1000)) - ((fcVector[0] - 48) * 10000) + 48; |
JAgustinOtero | 0:1f97d368029f | 296 | fcVector[5] = (((((fc / 1) - ((fcVector[4] - 48) * 10)) - ((fcVector[3] - 48) * 100)) - ((fcVector[2] - 48) * 1000)) - ((fcVector[1] - 48) * 10000)) - ((fcVector[0] - 48) * 100000) + 48; |
JAgustinOtero | 0:1f97d368029f | 297 | //PC.printf("%d%d%d%d%d%dHz",fcVector[0],(fcVector[1]),fcVector[2],fcVector[3],fcVector[4],fcVector[5]); |
JAgustinOtero | 0:1f97d368029f | 298 | strcat(InfoFc,fcVector); |
JAgustinOtero | 0:1f97d368029f | 299 | //PC.puts(InfoFc); |
JAgustinOtero | 0:1f97d368029f | 300 | text(7,7,InfoFc,16,1); |
JAgustinOtero | 0:1f97d368029f | 301 | fc_var=1; |
JAgustinOtero | 0:1f97d368029f | 302 | } |
JAgustinOtero | 0:1f97d368029f | 303 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 304 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 305 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 306 | void infoBasica() |
JAgustinOtero | 0:1f97d368029f | 307 | { |
JAgustinOtero | 0:1f97d368029f | 308 | |
JAgustinOtero | 0:1f97d368029f | 309 | FrecuenciaDeCorte(); |
JAgustinOtero | 0:1f97d368029f | 310 | |
JAgustinOtero | 0:1f97d368029f | 311 | |
JAgustinOtero | 0:1f97d368029f | 312 | //PC.printf("%d%d%d%d%d%dHz",fcVector[0],fcVector[1],fcVector[2],fcVector[3],fcVector[4],fcVector[5]); |
JAgustinOtero | 0:1f97d368029f | 313 | } |
JAgustinOtero | 0:1f97d368029f | 314 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 315 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 316 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 317 | float Valormaximo () |
JAgustinOtero | 0:1f97d368029f | 318 | { |
JAgustinOtero | 0:1f97d368029f | 319 | float aux = -100; |
JAgustinOtero | 0:1f97d368029f | 320 | for(unsigned int i=0 ; i<cantMediciones ; i++ ) { |
JAgustinOtero | 0:1f97d368029f | 321 | if(gananciadB[i]>aux) { |
JAgustinOtero | 0:1f97d368029f | 322 | aux = gananciadB[i]; |
JAgustinOtero | 0:1f97d368029f | 323 | } |
JAgustinOtero | 0:1f97d368029f | 324 | } |
JAgustinOtero | 0:1f97d368029f | 325 | return aux; |
JAgustinOtero | 0:1f97d368029f | 326 | } |
JAgustinOtero | 0:1f97d368029f | 327 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 328 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 329 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 330 | void graficoZOOM() |
JAgustinOtero | 0:1f97d368029f | 331 | { |
JAgustinOtero | 0:1f97d368029f | 332 | /*-------------------------------------*//*ZOOM 0: GANANCIA POSITIVA*//*-------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 333 | Vline(0 , 1 , 63 , 1); |
JAgustinOtero | 0:1f97d368029f | 334 | if(polpantalla[ZOOM-1]==0) { |
JAgustinOtero | 0:1f97d368029f | 335 | Hline(0 , 62 , 127 , 1); |
JAgustinOtero | 0:1f97d368029f | 336 | DivisionesEjeY(2 , 20 , 3 , 1 , 3 , 1); |
JAgustinOtero | 0:1f97d368029f | 337 | DivisionesEjeX(1 , 125 , 1 , 62 , 3 , 1); |
JAgustinOtero | 0:1f97d368029f | 338 | if(text_var==1) { |
JAgustinOtero | 0:1f97d368029f | 339 | text(4 , 62 , "0" , 1, 1); |
JAgustinOtero | 0:1f97d368029f | 340 | text(4 , 4 , "60" , 2 , 1); |
JAgustinOtero | 0:1f97d368029f | 341 | text(4 , 24 , "40" , 2 , 1); |
JAgustinOtero | 0:1f97d368029f | 342 | text(4 , 44 , "20" , 2 , 1); |
JAgustinOtero | 0:1f97d368029f | 343 | text(13,4,"dB",2,1);//dB |
JAgustinOtero | 0:1f97d368029f | 344 | } |
JAgustinOtero | 0:1f97d368029f | 345 | if(ZOOM==1) { |
JAgustinOtero | 0:1f97d368029f | 346 | text(104,4,"1-10HZ",6,1); |
JAgustinOtero | 0:1f97d368029f | 347 | } |
JAgustinOtero | 0:1f97d368029f | 348 | if(ZOOM==2) { |
JAgustinOtero | 0:1f97d368029f | 349 | text(96,4,"10-100HZ",8,1); |
JAgustinOtero | 0:1f97d368029f | 350 | } |
JAgustinOtero | 0:1f97d368029f | 351 | if(ZOOM==3) { |
JAgustinOtero | 0:1f97d368029f | 352 | text(96,4,"100-1KHZ",8,1); |
JAgustinOtero | 0:1f97d368029f | 353 | } |
JAgustinOtero | 0:1f97d368029f | 354 | if(ZOOM==4) { |
JAgustinOtero | 0:1f97d368029f | 355 | text(96,4,"1K-10KHZ",8,1); |
JAgustinOtero | 0:1f97d368029f | 356 | } |
JAgustinOtero | 0:1f97d368029f | 357 | if(ZOOM==5) { |
JAgustinOtero | 0:1f97d368029f | 358 | text(88,4,"10K-100KHZ",10,1); |
JAgustinOtero | 0:1f97d368029f | 359 | } |
JAgustinOtero | 0:1f97d368029f | 360 | if(ZOOM==6) { |
JAgustinOtero | 0:1f97d368029f | 361 | text(92,4,"100K-1MHZ",9,1); |
JAgustinOtero | 0:1f97d368029f | 362 | } |
JAgustinOtero | 0:1f97d368029f | 363 | |
JAgustinOtero | 0:1f97d368029f | 364 | } |
JAgustinOtero | 0:1f97d368029f | 365 | /*-------------------------------------*//*-------------------------------------*//*-------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 366 | /*-------------------------------------*//*ZOOM 1: GANANCIA NEGATIVA*//*-------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 367 | if(polpantalla[ZOOM-1]==1) { |
JAgustinOtero | 0:1f97d368029f | 368 | Hline(0 , 1 , 127 , 1); |
JAgustinOtero | 0:1f97d368029f | 369 | DivisionesEjeY(1 , 20 , 3 , 1 , 3 , 1); |
JAgustinOtero | 0:1f97d368029f | 370 | DivisionesEjeX(1 , 125 , 1 , 1 , 3 , 1); |
JAgustinOtero | 0:1f97d368029f | 371 | if(text_var==1) { |
JAgustinOtero | 0:1f97d368029f | 372 | text(4 , 6 , "0" , 1, 1); |
JAgustinOtero | 0:1f97d368029f | 373 | text(4 , 23 , "-20" , 3, 1); |
JAgustinOtero | 0:1f97d368029f | 374 | text(4 , 43 , "-40" , 3 , 1); |
JAgustinOtero | 0:1f97d368029f | 375 | text(4 , 63 , "-60" , 3 , 1); |
JAgustinOtero | 0:1f97d368029f | 376 | text(17,63,"dB",2,1);//dB |
JAgustinOtero | 0:1f97d368029f | 377 | } |
JAgustinOtero | 0:1f97d368029f | 378 | if(ZOOM==1) { |
JAgustinOtero | 0:1f97d368029f | 379 | text(104,63,"1-10HZ",6,1); |
JAgustinOtero | 0:1f97d368029f | 380 | } |
JAgustinOtero | 0:1f97d368029f | 381 | if(ZOOM==2) { |
JAgustinOtero | 0:1f97d368029f | 382 | text(96,63,"10-100HZ",8,1); |
JAgustinOtero | 0:1f97d368029f | 383 | } |
JAgustinOtero | 0:1f97d368029f | 384 | if(ZOOM==3) { |
JAgustinOtero | 0:1f97d368029f | 385 | text(96,63,"100-1KHZ",8,1); |
JAgustinOtero | 0:1f97d368029f | 386 | } |
JAgustinOtero | 0:1f97d368029f | 387 | if(ZOOM==4) { |
JAgustinOtero | 0:1f97d368029f | 388 | text(96,63,"1K-10KHZ",8,1); |
JAgustinOtero | 0:1f97d368029f | 389 | } |
JAgustinOtero | 0:1f97d368029f | 390 | if(ZOOM==5) { |
JAgustinOtero | 0:1f97d368029f | 391 | text(96,63,"10K-100KHZ",10,1); |
JAgustinOtero | 0:1f97d368029f | 392 | } |
JAgustinOtero | 0:1f97d368029f | 393 | if(ZOOM==6) { |
JAgustinOtero | 0:1f97d368029f | 394 | text(92,63,"100K-1MHZ",9,1); |
JAgustinOtero | 0:1f97d368029f | 395 | } |
JAgustinOtero | 0:1f97d368029f | 396 | |
JAgustinOtero | 0:1f97d368029f | 397 | } |
JAgustinOtero | 0:1f97d368029f | 398 | /*-------------------------------------*//*-------------------------------------*//*-------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 399 | /*-------------------------------------*//*ZOOM 2: GANANCIA MIXTA*//*-------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 400 | if(polpantalla[ZOOM-1]==2) { |
JAgustinOtero | 0:1f97d368029f | 401 | Hline(0 , 32 , 127 , 1); |
JAgustinOtero | 0:1f97d368029f | 402 | DivisionesEjeY(2 , 10 , 6 , 1 , 3 , 1); |
JAgustinOtero | 0:1f97d368029f | 403 | DivisionesEjeX(1 , 125 , 1 , 32 , 3 , 1); |
JAgustinOtero | 0:1f97d368029f | 404 | if(text_var==1) { |
JAgustinOtero | 0:1f97d368029f | 405 | text(4,4,"60",2,1);//60 |
JAgustinOtero | 0:1f97d368029f | 406 | text(4,14,"40",2,1);//40 |
JAgustinOtero | 0:1f97d368029f | 407 | text(4,24,"20",2,1);//20 |
JAgustinOtero | 0:1f97d368029f | 408 | text(6,38,"0",1,1);//0 |
JAgustinOtero | 0:1f97d368029f | 409 | text(3,44,"-20",3,1);//-20 |
JAgustinOtero | 0:1f97d368029f | 410 | text(3,54,"-40",3,1);//-40 |
JAgustinOtero | 0:1f97d368029f | 411 | text(3,63,"-60",3,1);//-60 |
JAgustinOtero | 0:1f97d368029f | 412 | text(13,4,"dB",2,1);//dB |
JAgustinOtero | 0:1f97d368029f | 413 | } |
JAgustinOtero | 0:1f97d368029f | 414 | if(ZOOM==1) { |
JAgustinOtero | 0:1f97d368029f | 415 | text(104,4,"1-10HZ",6,1); |
JAgustinOtero | 0:1f97d368029f | 416 | } |
JAgustinOtero | 0:1f97d368029f | 417 | if(ZOOM==2) { |
JAgustinOtero | 0:1f97d368029f | 418 | text(96,4,"10-100HZ",8,1); |
JAgustinOtero | 0:1f97d368029f | 419 | } |
JAgustinOtero | 0:1f97d368029f | 420 | if(ZOOM==3) { |
JAgustinOtero | 0:1f97d368029f | 421 | text(96,4,"100-1KHZ",8,1); |
JAgustinOtero | 0:1f97d368029f | 422 | } |
JAgustinOtero | 0:1f97d368029f | 423 | if(ZOOM==4) { |
JAgustinOtero | 0:1f97d368029f | 424 | text(96,4,"1K-10KHZ",8,1); |
JAgustinOtero | 0:1f97d368029f | 425 | } |
JAgustinOtero | 0:1f97d368029f | 426 | if(ZOOM==5) { |
JAgustinOtero | 0:1f97d368029f | 427 | text(96,4,"10K-100KHZ",10,1); |
JAgustinOtero | 0:1f97d368029f | 428 | } |
JAgustinOtero | 0:1f97d368029f | 429 | if(ZOOM==6) { |
JAgustinOtero | 0:1f97d368029f | 430 | text(92,4,"100K-1MHZ",9,1); |
JAgustinOtero | 0:1f97d368029f | 431 | } |
JAgustinOtero | 0:1f97d368029f | 432 | |
JAgustinOtero | 0:1f97d368029f | 433 | } |
JAgustinOtero | 0:1f97d368029f | 434 | if(habgrafico==1) { |
JAgustinOtero | 0:1f97d368029f | 435 | graficarZOOM(gananciadB); |
JAgustinOtero | 0:1f97d368029f | 436 | } |
JAgustinOtero | 0:1f97d368029f | 437 | /*-------------------------------------*//*-------------------------------------*//*-------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 438 | } |
JAgustinOtero | 0:1f97d368029f | 439 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 440 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 441 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 442 | void menu() |
JAgustinOtero | 0:1f97d368029f | 443 | { |
JAgustinOtero | 0:1f97d368029f | 444 | Cuadrado(0,127,8,63,1); |
JAgustinOtero | 0:1f97d368029f | 445 | text(57,6,"MENU",4,1); |
JAgustinOtero | 0:1f97d368029f | 446 | text(7,14,"HABILITAR O DESHABILITAR TEXTO",30,1); |
JAgustinOtero | 0:1f97d368029f | 447 | text(7,23,"GRAFICO COMPLETO",16,1); |
JAgustinOtero | 0:1f97d368029f | 448 | text(7,32,"ZOOM",4,1); |
JAgustinOtero | 0:1f97d368029f | 449 | text(7,41,"TOMAR MEDICIONES Y GRAFICAR",26,1); |
JAgustinOtero | 0:1f97d368029f | 450 | text(7,50,"MOSTRAR MODULO O FASE",21,1); |
JAgustinOtero | 0:1f97d368029f | 451 | text(7,59,"INFORMACION ADICIONAL",21,1); |
JAgustinOtero | 0:1f97d368029f | 452 | } |
JAgustinOtero | 0:1f97d368029f | 453 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 454 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 455 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 456 | void menu2() |
JAgustinOtero | 0:1f97d368029f | 457 | { |
JAgustinOtero | 0:1f97d368029f | 458 | Cuadrado(0,127,8,63,1); |
JAgustinOtero | 0:1f97d368029f | 459 | text(57,6,"ZOOM",4,1); |
JAgustinOtero | 0:1f97d368029f | 460 | text(7,14,"1HZ A 10HZ",10,1); |
JAgustinOtero | 0:1f97d368029f | 461 | text(7,23,"10HZ A 100HZ",12,1); |
JAgustinOtero | 0:1f97d368029f | 462 | text(7,32,"100HZ A 1KHZ",12,1); |
JAgustinOtero | 0:1f97d368029f | 463 | text(7,41,"1KHZ A 10KHZ",12,1); |
JAgustinOtero | 0:1f97d368029f | 464 | text(7,50,"10KHZ A 100KHZ",14,1); |
JAgustinOtero | 0:1f97d368029f | 465 | text(7,59,"100KHZ A 1MHZ",13,1); |
JAgustinOtero | 0:1f97d368029f | 466 | } |
JAgustinOtero | 0:1f97d368029f | 467 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 468 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 469 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 470 | void graficarcompleto(float gananciadB[]) |
JAgustinOtero | 0:1f97d368029f | 471 | { |
JAgustinOtero | 0:1f97d368029f | 472 | /*grafica los valores tomados previamente*/ |
JAgustinOtero | 0:1f97d368029f | 473 | if(modo==modulo) { |
JAgustinOtero | 0:1f97d368029f | 474 | for(unsigned int i=1 ; i<=cantMediciones ; i++) { |
JAgustinOtero | 0:1f97d368029f | 475 | if(gananciadB[i]>=-60 && gananciadB[i]<=60)point(10+i,32 - (gananciadB[i]/2.0),0); |
JAgustinOtero | 0:1f97d368029f | 476 | wait_ms(10); |
JAgustinOtero | 0:1f97d368029f | 477 | //linea(10+((114/cantMediciones)*(i-1)) , 32 - (gananciadB[i-1]/2.0) , 10+((114/cantMediciones)*i) , 32 - (gananciadB[i]/2.0), 1); |
JAgustinOtero | 0:1f97d368029f | 478 | //32 - ((20.0 * log10(hola))/2.0) |
JAgustinOtero | 0:1f97d368029f | 479 | } |
JAgustinOtero | 0:1f97d368029f | 480 | } else if(modo==fase) { |
JAgustinOtero | 0:1f97d368029f | 481 | for(unsigned int i=1 ; i<=cantMediciones ; i++) { |
JAgustinOtero | 0:1f97d368029f | 482 | if(defasaje[i]<=180)point(10+i,32 + (defasaje[i]/6.0),0); |
JAgustinOtero | 0:1f97d368029f | 483 | else if(defasaje[i]>180 && defasaje[i]<360)point(10+i,32 - ((360 - defasaje[i])/6.0),0); |
JAgustinOtero | 0:1f97d368029f | 484 | else |
JAgustinOtero | 0:1f97d368029f | 485 | wait_ms(10); |
JAgustinOtero | 0:1f97d368029f | 486 | } |
JAgustinOtero | 0:1f97d368029f | 487 | } |
JAgustinOtero | 0:1f97d368029f | 488 | } |
JAgustinOtero | 0:1f97d368029f | 489 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 490 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 491 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 492 | void graficarZOOM(float gananciadB[]) |
JAgustinOtero | 0:1f97d368029f | 493 | { |
JAgustinOtero | 0:1f97d368029f | 494 | polaridad(); |
JAgustinOtero | 0:1f97d368029f | 495 | if(modo==modulo) { |
JAgustinOtero | 0:1f97d368029f | 496 | if(polpantalla[ZOOM-1]==0) { |
JAgustinOtero | 0:1f97d368029f | 497 | for(unsigned int i=1 ; i<=(cantMediciones/6) ; i++) { |
JAgustinOtero | 0:1f97d368029f | 498 | linea(1+((i-1)*126/(cantMediciones/6)) , 62 - gananciadB[(cantMediciones/6)*(ZOOM-1)+(i-1)] , 1+(i*126/(cantMediciones/6)) , 62-gananciadB[(cantMediciones/6)*(ZOOM-1)+(i)], 1); |
JAgustinOtero | 0:1f97d368029f | 499 | } |
JAgustinOtero | 0:1f97d368029f | 500 | } |
JAgustinOtero | 0:1f97d368029f | 501 | if(polpantalla[ZOOM-1]==1) { |
JAgustinOtero | 0:1f97d368029f | 502 | for(unsigned int i=1 ; i<=(cantMediciones/6) ; i++) { |
JAgustinOtero | 0:1f97d368029f | 503 | linea(1+((i-1)*126/(cantMediciones/6)) , 2 - gananciadB[(cantMediciones/6)*(ZOOM-1)+(i-1)] , 1+(i*126/(cantMediciones/6)) , 2-gananciadB[(cantMediciones/6)*(ZOOM-1)+(i)], 1); |
JAgustinOtero | 0:1f97d368029f | 504 | } |
JAgustinOtero | 0:1f97d368029f | 505 | } |
JAgustinOtero | 0:1f97d368029f | 506 | if(polpantalla[ZOOM-1]==2) { |
JAgustinOtero | 0:1f97d368029f | 507 | for(unsigned int i=1 ; i<=(cantMediciones/6) ; i++) { |
JAgustinOtero | 0:1f97d368029f | 508 | linea(1+((i-1)*126/(cantMediciones/6)) , 32 - (gananciadB[(cantMediciones/6)*(ZOOM-1)+(i-1)]/2) , 1+(i*126/(cantMediciones/6)) , 32-(gananciadB[(cantMediciones/6)*(ZOOM-1)+(i)]/2), 1); |
JAgustinOtero | 0:1f97d368029f | 509 | } |
JAgustinOtero | 0:1f97d368029f | 510 | } |
JAgustinOtero | 0:1f97d368029f | 511 | } else if(modo==fase) { |
JAgustinOtero | 0:1f97d368029f | 512 | if(polpantalla[ZOOM-1]==0) { |
JAgustinOtero | 0:1f97d368029f | 513 | for(unsigned int i=1 ; i<=(cantMediciones/6) ; i++) { |
JAgustinOtero | 0:1f97d368029f | 514 | linea(1+((i-1)*126/(cantMediciones/6)) , 62 - defasaje[(cantMediciones/6)*(ZOOM-1)+(i-1)/3] , 1+(i*126/(cantMediciones/6)) , 62-defasaje[(cantMediciones/6)*(ZOOM-1)+(i)/3], 1); |
JAgustinOtero | 0:1f97d368029f | 515 | } |
JAgustinOtero | 0:1f97d368029f | 516 | } |
JAgustinOtero | 0:1f97d368029f | 517 | if(polpantalla[ZOOM-1]==1) { |
JAgustinOtero | 0:1f97d368029f | 518 | for(unsigned int i=1 ; i<=(cantMediciones/6) ; i++) { |
JAgustinOtero | 0:1f97d368029f | 519 | linea(1+((i-1)*126/(cantMediciones/6)) , 2 - defasaje[(cantMediciones/6)*(ZOOM-1)+(i-1)/3] , 1+(i*126/(cantMediciones/6)) , 2-defasaje[(cantMediciones/6)*(ZOOM-1)+(i)/3], 1); |
JAgustinOtero | 0:1f97d368029f | 520 | } |
JAgustinOtero | 0:1f97d368029f | 521 | } |
JAgustinOtero | 0:1f97d368029f | 522 | if(polpantalla[ZOOM-1]==2) { |
JAgustinOtero | 0:1f97d368029f | 523 | for(unsigned int i=1 ; i<=(cantMediciones/6) ; i++) { |
JAgustinOtero | 0:1f97d368029f | 524 | linea(1+((i-1)*126/(cantMediciones/6)) , 32 - (defasaje[(cantMediciones/6)*(ZOOM-1)+(i-1)]/6) , 1+(i*126/(cantMediciones/6)) , 32-(defasaje[(cantMediciones/6)*(ZOOM-1)+(i)]/6), 1); |
JAgustinOtero | 0:1f97d368029f | 525 | } |
JAgustinOtero | 0:1f97d368029f | 526 | } |
JAgustinOtero | 0:1f97d368029f | 527 | } |
JAgustinOtero | 0:1f97d368029f | 528 | } |
JAgustinOtero | 0:1f97d368029f | 529 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 530 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 531 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 532 | void PULSADORMENU_fun () |
JAgustinOtero | 0:1f97d368029f | 533 | { |
JAgustinOtero | 0:1f97d368029f | 534 | //enum{grafico, menu, ZOOM, menu2}; |
JAgustinOtero | 0:1f97d368029f | 535 | switch(screen) { |
JAgustinOtero | 0:1f97d368029f | 536 | case graficoComp: |
JAgustinOtero | 0:1f97d368029f | 537 | if(PULSADORMENU==1) { |
JAgustinOtero | 0:1f97d368029f | 538 | wait(0.1); |
JAgustinOtero | 0:1f97d368029f | 539 | if(PULSADORMENU==1) |
JAgustinOtero | 0:1f97d368029f | 540 | CLRScreen(); |
JAgustinOtero | 0:1f97d368029f | 541 | menu(); |
JAgustinOtero | 0:1f97d368029f | 542 | PC.printf("menu"); |
JAgustinOtero | 0:1f97d368029f | 543 | screen=1; |
JAgustinOtero | 0:1f97d368029f | 544 | } |
JAgustinOtero | 0:1f97d368029f | 545 | break; |
JAgustinOtero | 0:1f97d368029f | 546 | case menuPrincipal: |
JAgustinOtero | 0:1f97d368029f | 547 | if(PULSADORMENU==1) { |
JAgustinOtero | 0:1f97d368029f | 548 | wait(0.1); |
JAgustinOtero | 0:1f97d368029f | 549 | if(PULSADORMENU==1) |
JAgustinOtero | 0:1f97d368029f | 550 | CLRScreen(); |
JAgustinOtero | 0:1f97d368029f | 551 | /*-------------------------------------*//*OPCION 0: HABILITACION DE TEXTO*//*-------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 552 | if(opcion==HDTexto) { |
JAgustinOtero | 0:1f97d368029f | 553 | text_var = !text_var; |
JAgustinOtero | 0:1f97d368029f | 554 | grafico(); |
JAgustinOtero | 0:1f97d368029f | 555 | screen = 0; |
JAgustinOtero | 0:1f97d368029f | 556 | } else if(opcion==GraficoCompleto) { |
JAgustinOtero | 0:1f97d368029f | 557 | grafico(); |
JAgustinOtero | 0:1f97d368029f | 558 | ZOOM = 0; |
JAgustinOtero | 0:1f97d368029f | 559 | grafico_var=0; |
JAgustinOtero | 0:1f97d368029f | 560 | screen = 0; |
JAgustinOtero | 0:1f97d368029f | 561 | /*-------------------------------------*//*-------------------------------------*//*-------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 562 | /*-------------------------------------*//*OPCION 2: ZOOM*//*------------------------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 563 | } else if(opcion==Zoom) { |
JAgustinOtero | 0:1f97d368029f | 564 | menu2(); |
JAgustinOtero | 0:1f97d368029f | 565 | screen = 2; |
JAgustinOtero | 0:1f97d368029f | 566 | /*-------------------------------------*//*-------------------------------------*//*-------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 567 | /*-------------------------------------*//*OPCION 3: TOMA DE VALORES*//*-------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 568 | } else if(opcion==TomarMediciones) { |
JAgustinOtero | 0:1f97d368029f | 569 | if(Rango==100000)cantMediciones=90; |
JAgustinOtero | 0:1f97d368029f | 570 | else if(Rango==1000000)cantMediciones=108; |
JAgustinOtero | 0:1f97d368029f | 571 | text(31,15,"TOMANDO VALORES",15,1); |
JAgustinOtero | 0:1f97d368029f | 572 | point(92,15,1); |
JAgustinOtero | 0:1f97d368029f | 573 | point(94,15,1); |
JAgustinOtero | 0:1f97d368029f | 574 | point(96,15,1); |
JAgustinOtero | 0:1f97d368029f | 575 | Cuadrado(5,121,20,50,1); |
JAgustinOtero | 0:1f97d368029f | 576 | setFreq(1); |
JAgustinOtero | 0:1f97d368029f | 577 | wait(0.3); |
JAgustinOtero | 0:1f97d368029f | 578 | for(unsigned int i= 0 ; i<cantMediciones ; i++ ) { |
JAgustinOtero | 0:1f97d368029f | 579 | barridoEnFrecuencia0a9(i); |
JAgustinOtero | 0:1f97d368029f | 580 | Vline(20,6+i,50,1); |
JAgustinOtero | 0:1f97d368029f | 581 | } |
JAgustinOtero | 0:1f97d368029f | 582 | setFreq(1000); |
JAgustinOtero | 0:1f97d368029f | 583 | /*-------------------------------------*//*-------------------------------------*//*-------------------------------------*/ |
JAgustinOtero | 0:1f97d368029f | 584 | CLRScreen(); |
JAgustinOtero | 0:1f97d368029f | 585 | habgrafico=1; |
JAgustinOtero | 0:1f97d368029f | 586 | ZOOM=0; |
JAgustinOtero | 0:1f97d368029f | 587 | fc_var=0; |
JAgustinOtero | 0:1f97d368029f | 588 | grafico(); |
JAgustinOtero | 0:1f97d368029f | 589 | polaridad(); |
JAgustinOtero | 0:1f97d368029f | 590 | VMax=Valormaximo(); |
JAgustinOtero | 0:1f97d368029f | 591 | screen = 0; |
JAgustinOtero | 0:1f97d368029f | 592 | } else if(opcion==FaseAngulo) { |
JAgustinOtero | 0:1f97d368029f | 593 | //CLRScreen(); |
JAgustinOtero | 0:1f97d368029f | 594 | if(modo==modulo)modo = fase; |
JAgustinOtero | 0:1f97d368029f | 595 | else if(modo==fase)modo = modulo; |
JAgustinOtero | 0:1f97d368029f | 596 | grafico(); |
JAgustinOtero | 0:1f97d368029f | 597 | ZOOM = 0; |
JAgustinOtero | 0:1f97d368029f | 598 | grafico_var=0; |
JAgustinOtero | 0:1f97d368029f | 599 | screen = 0; |
JAgustinOtero | 0:1f97d368029f | 600 | } else if(opcion==InfoAdicional) { |
JAgustinOtero | 0:1f97d368029f | 601 | //CLRScreen(); |
JAgustinOtero | 0:1f97d368029f | 602 | infoBasica(); |
JAgustinOtero | 0:1f97d368029f | 603 | screen=3; |
JAgustinOtero | 0:1f97d368029f | 604 | } |
JAgustinOtero | 0:1f97d368029f | 605 | opcion = 0; |
JAgustinOtero | 0:1f97d368029f | 606 | } |
JAgustinOtero | 0:1f97d368029f | 607 | break; |
JAgustinOtero | 0:1f97d368029f | 608 | case menuZoom: |
JAgustinOtero | 0:1f97d368029f | 609 | if(PULSADORMENU==1) { |
JAgustinOtero | 0:1f97d368029f | 610 | wait(0.1); |
JAgustinOtero | 0:1f97d368029f | 611 | if(PULSADORMENU==1) |
JAgustinOtero | 0:1f97d368029f | 612 | CLRScreen(); |
JAgustinOtero | 0:1f97d368029f | 613 | ZOOM = opcion + 1; |
JAgustinOtero | 0:1f97d368029f | 614 | graficoZOOM(); |
JAgustinOtero | 0:1f97d368029f | 615 | grafico_var=1; |
JAgustinOtero | 0:1f97d368029f | 616 | screen=0; |
JAgustinOtero | 0:1f97d368029f | 617 | opcion = 0; |
JAgustinOtero | 0:1f97d368029f | 618 | } |
JAgustinOtero | 0:1f97d368029f | 619 | break; |
JAgustinOtero | 0:1f97d368029f | 620 | case Info: |
JAgustinOtero | 0:1f97d368029f | 621 | if(PULSADORMENU==1) { |
JAgustinOtero | 0:1f97d368029f | 622 | wait(0.1); |
JAgustinOtero | 0:1f97d368029f | 623 | if(PULSADORMENU==1) |
JAgustinOtero | 0:1f97d368029f | 624 | CLRScreen(); |
JAgustinOtero | 0:1f97d368029f | 625 | grafico(); |
JAgustinOtero | 0:1f97d368029f | 626 | screen=0; |
JAgustinOtero | 0:1f97d368029f | 627 | } |
JAgustinOtero | 0:1f97d368029f | 628 | break; |
JAgustinOtero | 0:1f97d368029f | 629 | } |
JAgustinOtero | 0:1f97d368029f | 630 | } |
JAgustinOtero | 0:1f97d368029f | 631 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 632 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 633 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 634 | unsigned char PULSADORDOWN_fun() |
JAgustinOtero | 0:1f97d368029f | 635 | { |
JAgustinOtero | 0:1f97d368029f | 636 | if(PULSADORDOWN==1 && (screen == 1 || screen == 2)) { |
JAgustinOtero | 0:1f97d368029f | 637 | wait(0.1); |
JAgustinOtero | 0:1f97d368029f | 638 | if(PULSADORDOWN==1) { |
JAgustinOtero | 0:1f97d368029f | 639 | if(opcion<5 && screen == 1)opcion++; |
JAgustinOtero | 0:1f97d368029f | 640 | else if(opcion<5 && screen == 2)opcion++; |
JAgustinOtero | 0:1f97d368029f | 641 | for(unsigned char x=1 ; x < 5 ; x++) { |
JAgustinOtero | 0:1f97d368029f | 642 | CLRVline(9,x,62); |
JAgustinOtero | 0:1f97d368029f | 643 | } |
JAgustinOtero | 0:1f97d368029f | 644 | } |
JAgustinOtero | 0:1f97d368029f | 645 | } |
JAgustinOtero | 0:1f97d368029f | 646 | return opcion; |
JAgustinOtero | 0:1f97d368029f | 647 | } |
JAgustinOtero | 0:1f97d368029f | 648 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 649 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 650 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 651 | unsigned char PULSADORUP_fun() |
JAgustinOtero | 0:1f97d368029f | 652 | { |
JAgustinOtero | 0:1f97d368029f | 653 | if(PULSADORUP==1 && (screen == 1 || screen == 2)) { |
JAgustinOtero | 0:1f97d368029f | 654 | wait(0.1); |
JAgustinOtero | 0:1f97d368029f | 655 | if(PULSADORUP==1) { |
JAgustinOtero | 0:1f97d368029f | 656 | if(opcion>0)opcion--; |
JAgustinOtero | 0:1f97d368029f | 657 | for(unsigned char x=1 ; x < 5 ; x++) { |
JAgustinOtero | 0:1f97d368029f | 658 | CLRVline(9,x,62); |
JAgustinOtero | 0:1f97d368029f | 659 | } |
JAgustinOtero | 0:1f97d368029f | 660 | } |
JAgustinOtero | 0:1f97d368029f | 661 | } |
JAgustinOtero | 0:1f97d368029f | 662 | return opcion; |
JAgustinOtero | 0:1f97d368029f | 663 | } |
JAgustinOtero | 0:1f97d368029f | 664 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 665 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 666 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 667 | void PULSADORLEFT_fun() |
JAgustinOtero | 0:1f97d368029f | 668 | { |
JAgustinOtero | 0:1f97d368029f | 669 | char var=0; |
JAgustinOtero | 0:1f97d368029f | 670 | if(PULSADORLEFT==1) { |
JAgustinOtero | 0:1f97d368029f | 671 | wait(0.1); |
JAgustinOtero | 0:1f97d368029f | 672 | if(PULSADORLEFT==1 && screen ==0) { |
JAgustinOtero | 0:1f97d368029f | 673 | if(ZOOM == 0) |
JAgustinOtero | 0:1f97d368029f | 674 | var=1; |
JAgustinOtero | 0:1f97d368029f | 675 | else var=0; |
JAgustinOtero | 0:1f97d368029f | 676 | if(ZOOM >= 1) { |
JAgustinOtero | 0:1f97d368029f | 677 | CLRScreen(); |
JAgustinOtero | 0:1f97d368029f | 678 | ZOOM--; |
JAgustinOtero | 0:1f97d368029f | 679 | } |
JAgustinOtero | 0:1f97d368029f | 680 | if (ZOOM == 0) { |
JAgustinOtero | 0:1f97d368029f | 681 | if(var==0)CLRScreen; |
JAgustinOtero | 0:1f97d368029f | 682 | grafico(); |
JAgustinOtero | 0:1f97d368029f | 683 | } |
JAgustinOtero | 0:1f97d368029f | 684 | } |
JAgustinOtero | 0:1f97d368029f | 685 | if(grafico_var==1 && ZOOM >= 1) { |
JAgustinOtero | 0:1f97d368029f | 686 | graficoZOOM(); |
JAgustinOtero | 0:1f97d368029f | 687 | if(habgrafico==1) { |
JAgustinOtero | 0:1f97d368029f | 688 | graficarZOOM(gananciadB); |
JAgustinOtero | 0:1f97d368029f | 689 | } |
JAgustinOtero | 0:1f97d368029f | 690 | } |
JAgustinOtero | 0:1f97d368029f | 691 | } |
JAgustinOtero | 0:1f97d368029f | 692 | } |
JAgustinOtero | 0:1f97d368029f | 693 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 694 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 695 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 696 | void PULSADORRIGHT_fun() |
JAgustinOtero | 0:1f97d368029f | 697 | { |
JAgustinOtero | 0:1f97d368029f | 698 | if(PULSADORRIGHT==1 && screen ==0) { |
JAgustinOtero | 0:1f97d368029f | 699 | wait(0.1); |
JAgustinOtero | 0:1f97d368029f | 700 | if(PULSADORRIGHT==1) { |
JAgustinOtero | 0:1f97d368029f | 701 | if(ZOOM < 6) { |
JAgustinOtero | 0:1f97d368029f | 702 | if(ZOOM==0)grafico_var=1; |
JAgustinOtero | 0:1f97d368029f | 703 | CLRScreen(); |
JAgustinOtero | 0:1f97d368029f | 704 | ZOOM++; |
JAgustinOtero | 0:1f97d368029f | 705 | if(grafico_var==1) graficoZOOM(); |
JAgustinOtero | 0:1f97d368029f | 706 | if(habgrafico==1) { |
JAgustinOtero | 0:1f97d368029f | 707 | graficarZOOM(gananciadB); |
JAgustinOtero | 0:1f97d368029f | 708 | } |
JAgustinOtero | 0:1f97d368029f | 709 | } |
JAgustinOtero | 0:1f97d368029f | 710 | } |
JAgustinOtero | 0:1f97d368029f | 711 | } |
JAgustinOtero | 0:1f97d368029f | 712 | } |
JAgustinOtero | 0:1f97d368029f | 713 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 714 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 715 | ////////////////////////////////////////////////////////////// |
JAgustinOtero | 0:1f97d368029f | 716 | unsigned char screen_pass() |
JAgustinOtero | 0:1f97d368029f | 717 | { |
JAgustinOtero | 0:1f97d368029f | 718 | return screen; |
JAgustinOtero | 0:1f97d368029f | 719 | } |
JAgustinOtero | 0:1f97d368029f | 720 | |
JAgustinOtero | 0:1f97d368029f | 721 | void MedidorDeTiempo() |
JAgustinOtero | 0:1f97d368029f | 722 | { |
JAgustinOtero | 0:1f97d368029f | 723 | if(hab_tiempo) |
JAgustinOtero | 0:1f97d368029f | 724 | tiempo++; |
JAgustinOtero | 0:1f97d368029f | 725 | } |