Libreria principal del graficador de bode

Committer:
JAgustinOtero
Date:
Thu Dec 06 00:07:02 2018 +0000
Revision:
0:1f97d368029f
LIbreria principal

Who changed what in which revision?

UserRevisionLine numberNew 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 }