Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 0:1f97d368029f, committed 2018-12-06
- Comitter:
- JAgustinOtero
- Date:
- Thu Dec 06 00:07:02 2018 +0000
- Commit message:
- LIbreria principal
Changed in this revision
| GraficadorDeBode.cpp | Show annotated file Show diff for this revision Revisions of this file |
| GraficadorDeBode.h | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GraficadorDeBode.cpp Thu Dec 06 00:07:02 2018 +0000
@@ -0,0 +1,725 @@
+/*
+Libreria principal:
+en la misma se juntan las funciones de muestreo y toma de datos con las funciones de graficos
+ para poder muestrear en display los datos analizados
+
+
+*/
+
+#include "mbed.h"
+#include "math.h"
+#include "st7920.h"
+#include "ST7920Libreries.h"
+#include "GraficadorDeBode.h"
+#include "AD9833.h"
+#include "math.h"
+#include "string.h"
+#include "hal.h"
+
+#define Rango 100000
+
+#define R 1000.0
+#define C 1.0*pow(10.0,-6.0)
+
+#define K pow(10.0,potencia)
+
+enum {graficoComp, menuPrincipal, menuZoom, Info};
+enum {graficocompleto, zoom};
+enum {deshabilitado, habilitado};
+enum {HDTexto, GraficoCompleto, Zoom, TomarMediciones, FaseAngulo, InfoAdicional};
+
+//////////////////////////////////////////////////////////////
+//////////// PUERTOS /////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+Serial PC(USBTX,USBRX,115200);
+DigitalIn PULSADORMENU(PTC17);
+DigitalIn PULSADORRIGHT(PTA17);
+DigitalIn PULSADORLEFT(PTD2);
+DigitalIn PULSADORDOWN(PTA16);
+DigitalIn PULSADORUP(PTD3);
+DigitalIn FLANCOENTRADA(PTE20);
+DigitalIn FLANCOSALIDA(PTE21);
+AnalogIn ADC (PTC2);
+AnalogIn ADC2 (PTC1);
+DigitalOut A (PTB8);
+DigitalOut B (PTB9);
+//DigitalOut MC (PTB10);
+DigitalOut HOLA(PTE29);
+DigitalOut HOLA2(PTE30);
+//////////////////////////////////////////////////////////////
+//////////// VARIABLES ///////////////////////////////////////
+//////////////////////////////////////////////////////////////
+volatile char mode_rx_diff; // flag
+unsigned char hab=0;
+unsigned int cantMediciones=114;
+uint32_t diff;
+unsigned char opcion=0;
+unsigned char screen=0;
+/*screen=3 menu 2
+ screen=2 ZOOM
+ screen=1 menu
+ screen=0 grafico*/
+unsigned char grafico_var=0;
+/*grafico_var=0 grafico completo
+ grafico_var=1 Zoom*/
+unsigned char text_var=1;
+/*texto habilitado/deshabilitado*/
+unsigned char neg=0,pos=0,polpantalla[6]= {2,2,2,2,2,2};
+unsigned char ZOOM=0;
+float tiempo = 0;
+unsigned char modo=fase;
+unsigned char habgrafico=0;
+unsigned char corte=0;
+float defasaje[108]= {0};
+float defasaje_aux=0;
+float gananciadB[108]= {0};
+float ganancia[108] = {0};
+float frecuencias[108]= {
+ 1,1,1,1,2,2,2,2,3,3,3,4,5,6,7,8,9,
+ 11,12,14,16,18,20,23,26,29,33,37,42,48,54,61,69,78,88,
+ 112,127,143,162,183,206,233,263,297,335,379,428,483,545,615,695,784,885,
+ 1128,1274,1483,1623,1832,2069,2335,2636,2975,3359,3792,4281,4832,5455,6158,6951,7847,8858,
+ 11288,12742,14384,16237,18329,20691,23357,26366,29763,33598,37926,42813,48329,54555,61584,69519,78476,88586,
+ 112883,127427,143844,162377,183298,206913,233572,263665,297635,335981,379269,428133,483293,545559,615848,695192,784759,885866
+};
+char fcVector[7]= {0};
+float VMax=0;
+unsigned char fc_var=0;
+unsigned char fcVal=0;
+unsigned char MULTIPLEXOR=4;
+float muestras=0;
+float var_aux_muestras=0;
+float Vref=1/sqrt(2.0);
+unsigned int k=0;
+uint16_t var_fase=0;
+unsigned char hab_tiempo=0;
+
+//////////////////////////////////////////////////////////////
+//////////// FUNCIONES ///////////////////////////////////////
+//////////////////////////////////////////////////////////////
+
+/*realiza un barrido en frecuencia y toma valores tanto de modulo como de fase
+a su vez tambien varia la ganancia del modulo
+*/
+void barridoEnFrecuencia0a9(unsigned char i)
+{
+ unsigned int k=0;
+ unsigned int j=0;
+ setFreq(frecuencias[i]);
+ wait(0.4);
+
+ /*medicion de MODULO*/
+ /*para frecuencias menores a 10Hz realiza un muestreo de 30000 muestras*/
+ if(i<1) {
+ MULTIPLEXOR=0;
+ A=(MULTIPLEXOR) & 1;
+ B=(MULTIPLEXOR & 2) >> 1;
+ //MC=(MULTIPLEXOR & 4) >> 2;
+ wait(0.5);
+ }
+ if(ganancia[i-1]>0.7) {
+ if(MULTIPLEXOR>0)MULTIPLEXOR--;
+ A=(MULTIPLEXOR) & 1;
+ B=((MULTIPLEXOR) & 2) >> 1;
+ //MC=((MULTIPLEXOR) & 4) >> 2;
+ wait(0.5);
+ } else if (ganancia[i-1]<0.075) {
+ if(MULTIPLEXOR<2)MULTIPLEXOR++;
+ A=(MULTIPLEXOR) & 1;
+ B=((MULTIPLEXOR) & 2) >> 1;
+ //MC=((MULTIPLEXOR) & 4) >> 2;
+ wait(0.5);
+ }
+ if(MULTIPLEXOR == 0 )Vref=1/1.4;
+ else if(MULTIPLEXOR == 1 )Vref=10/1.4;
+ else if(MULTIPLEXOR == 2 )Vref=100/1.4;
+ //else if(MULTIPLEXOR == 3 )Vref=0.1/sqrt(2.0);
+ //else if(MULTIPLEXOR == 4 )Vref=0.01/sqrt(2.0);
+ ganancia[i]=0;
+ if(i>=18){
+ /*for(unsigned int l=0; l<3; l++) {
+ ganancia[i] += ADC.read();
+ }
+ ganancia[i]=ganancia[i]/3.0;*/
+ ganancia[i] = ADC.read();
+ }
+ else if(i<18) {
+
+ for(k=0; k<30000; k++) {
+ var_aux_muestras=ADC2.read();
+ if(var_aux_muestras > muestras)muestras = var_aux_muestras;
+ }
+ ganancia[i] = muestras;
+ }
+ muestras=0;
+ k=0;
+ gananciadB[i] = 20 * log10( 3.3 * ganancia[i] / (float)Vref);
+ if(gananciadB[i]>60)gananciadB[i]=60;
+ else if(gananciadB[i]<-60)gananciadB[i]=-60;
+ if(gananciadB[i]<-19 && gananciadB[i]>-21)corte=i;
+
+ /*medicion de FASE*/
+ /*Realiza un promedio entre 3 valores de la misma frecuencia*/
+ defasaje[i]=0;
+ if(gananciadB[i]>-30) {
+ //HOLA=1;
+
+ new_tx_value=0;
+ new_rx_value=0;
+
+ while(1) {
+ uint32_t diff;
+
+ if (new_tx_value==1) {
+ /*HOLA=1;
+ HOLA=0;*/
+ hab=2;
+
+ }
+ if(new_rx_value==1 && hab==2) {
+ /*HOLA2=1;
+ HOLA2=0;*/
+ hab=1;
+
+ }
+ if(hab==1) {
+ diff = rx_pin_captured_value - tx_pin_captured_value;
+ if((diff / TICKS_PER_MS) < 1000000) {
+ defasaje[i]+=(diff/TICKS_PER_MS) * 360.0 / 1000.0 * frecuencias[i];
+ //printf("%.1fHz : %.2fº\n" ,frecuencias[i],defasaje[i] );
+ }
+ hab=0;
+ j++;
+ setFreq(frecuencias[i]);
+ wait(0.3);
+ if(j>=3)break;
+
+ }
+
+ new_tx_value=0;
+ new_rx_value=0;
+ }
+ } else defasaje[i] = 1190; /*descarta cualquier valor de fase que corresponda a un valor de frecuencia cuya ganancia sea menor a -20dB*/
+ if(defasaje[i]<1180)defasaje[i]=defasaje[i]/3.0;
+
+ j=0;
+}
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+void grafico()
+{
+ /*grafica los ejes cartecianos con los valores de modulo y fase segun corresponda(Solo luego de tomar una primer medicion)*/
+ Vline(0 , 10 , 64 , 1);
+ Hline(0 , 32 , 127 , 1);
+ DivisionesEjeY(2 , 10 , 6 , 10 , 3 , 1);
+ DivisionesEjeX(10 , 19 , 6 , 32 , 3 , 1);
+ if(text_var==1) {
+ TextoEjeY(modo,0);
+ TextoEjeX(0);
+ }
+ flechaY(2 , 32, 0 ,1);
+ flechaY(125 , 32, 1 ,1);
+ if(habgrafico==1) {
+ graficarcompleto(gananciadB);
+ if(modo==fase) {
+ Vline(0,12+corte,63,1);
+ for(unsigned int i = 0; i<32; i++) {
+ point(12+18,i*2,0); }
+ Vline(0,12+corte,63,1);
+ for(unsigned int i = 0; i<32; i++) {
+ point(12+18,i*2,0);
+ }
+ }
+ }
+}
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+void polaridad()
+{
+ /*Analiza si los valores de cierto rango de frecuencia estan por encima de 0, por debajo de 0 o ambos*/
+ if(modo==modulo) {
+ for(unsigned int j=0 ; j<6 ; j++) {
+ for(unsigned int i=0 ; i <= (cantMediciones / 6) ; i++ ) {
+ /*----------------------------------------------*/
+ if(gananciadB[(j*(cantMediciones/6))+i]>=0)pos++;
+
+ if(gananciadB[(j*(cantMediciones/6))+i]<0)neg++;
+ /*----------------------------------------------*/
+ if(pos>=(cantMediciones/6)-1) polpantalla[j]=0;
+
+ else if(neg>=(cantMediciones/6)-1) polpantalla[j]=1;
+
+ else polpantalla[j]=2;
+ }
+ }
+ }
+ if(modo==fase) {
+ for(unsigned int j=0 ; j<6 ; j++) {
+ for(unsigned int i=0 ; i <= (cantMediciones / 6) ; i++ ) {
+ /*----------------------------------------------*/
+ if(gananciadB[(j*(cantMediciones/6))+i]>=0)pos++;
+
+ if(gananciadB[(j*(cantMediciones/6))+i]<0)neg++;
+ /*----------------------------------------------*/
+ if(pos>=(cantMediciones/6)-1) polpantalla[j]=0;
+
+ else if(neg>=(cantMediciones/6)-1) polpantalla[j]=1;
+
+ else polpantalla[j]=2;
+ }
+ }
+ }
+ neg=0;
+ pos=0;
+
+}
+
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+/*Calcula la frecuencia de corte*/
+void FrecuenciaDeCorte()
+{
+ unsigned long fc = 0;
+ char InfoFc[9]= {'L','A',' ','F','C',' ','E','S',' '};
+ for(fcVal=0 ; fcVal<cantMediciones; fcVal++) {
+ if(gananciadB[fcVal] > VMax-4 && gananciadB[fcVal] < VMax-2) break;
+ }
+ fc = frecuencias[fcVal];
+ fcVector[0] = fc / 100000 + 48;
+ fcVector[1] = (fc / 10000) - ((fcVector[0] - 48) * 10) + 48;
+ fcVector[2] = ((fc / 1000) - ((fcVector[1] - 48) * 10)) - ((fcVector[0] - 48) * 100) + 48;
+ fcVector[3] = (((fc / 100) - ((fcVector[2] - 48) * 10)) - ((fcVector[1] - 48) * 100)) - ((fcVector[0] - 48) * 1000) + 48;
+ fcVector[4] = ((((fc / 10) - ((fcVector[3] - 48) * 10)) - ((fcVector[2] - 48) * 100)) - ((fcVector[1] - 48) * 1000)) - ((fcVector[0] - 48) * 10000) + 48;
+ 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;
+ //PC.printf("%d%d%d%d%d%dHz",fcVector[0],(fcVector[1]),fcVector[2],fcVector[3],fcVector[4],fcVector[5]);
+ strcat(InfoFc,fcVector);
+ //PC.puts(InfoFc);
+ text(7,7,InfoFc,16,1);
+ fc_var=1;
+}
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+void infoBasica()
+{
+
+ FrecuenciaDeCorte();
+
+
+ //PC.printf("%d%d%d%d%d%dHz",fcVector[0],fcVector[1],fcVector[2],fcVector[3],fcVector[4],fcVector[5]);
+}
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+float Valormaximo ()
+{
+ float aux = -100;
+ for(unsigned int i=0 ; i<cantMediciones ; i++ ) {
+ if(gananciadB[i]>aux) {
+ aux = gananciadB[i];
+ }
+ }
+ return aux;
+}
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+void graficoZOOM()
+{
+ /*-------------------------------------*//*ZOOM 0: GANANCIA POSITIVA*//*-------------------------------------*/
+ Vline(0 , 1 , 63 , 1);
+ if(polpantalla[ZOOM-1]==0) {
+ Hline(0 , 62 , 127 , 1);
+ DivisionesEjeY(2 , 20 , 3 , 1 , 3 , 1);
+ DivisionesEjeX(1 , 125 , 1 , 62 , 3 , 1);
+ if(text_var==1) {
+ text(4 , 62 , "0" , 1, 1);
+ text(4 , 4 , "60" , 2 , 1);
+ text(4 , 24 , "40" , 2 , 1);
+ text(4 , 44 , "20" , 2 , 1);
+ text(13,4,"dB",2,1);//dB
+ }
+ if(ZOOM==1) {
+ text(104,4,"1-10HZ",6,1);
+ }
+ if(ZOOM==2) {
+ text(96,4,"10-100HZ",8,1);
+ }
+ if(ZOOM==3) {
+ text(96,4,"100-1KHZ",8,1);
+ }
+ if(ZOOM==4) {
+ text(96,4,"1K-10KHZ",8,1);
+ }
+ if(ZOOM==5) {
+ text(88,4,"10K-100KHZ",10,1);
+ }
+ if(ZOOM==6) {
+ text(92,4,"100K-1MHZ",9,1);
+ }
+
+ }
+ /*-------------------------------------*//*-------------------------------------*//*-------------------------------------*/
+ /*-------------------------------------*//*ZOOM 1: GANANCIA NEGATIVA*//*-------------------------------------*/
+ if(polpantalla[ZOOM-1]==1) {
+ Hline(0 , 1 , 127 , 1);
+ DivisionesEjeY(1 , 20 , 3 , 1 , 3 , 1);
+ DivisionesEjeX(1 , 125 , 1 , 1 , 3 , 1);
+ if(text_var==1) {
+ text(4 , 6 , "0" , 1, 1);
+ text(4 , 23 , "-20" , 3, 1);
+ text(4 , 43 , "-40" , 3 , 1);
+ text(4 , 63 , "-60" , 3 , 1);
+ text(17,63,"dB",2,1);//dB
+ }
+ if(ZOOM==1) {
+ text(104,63,"1-10HZ",6,1);
+ }
+ if(ZOOM==2) {
+ text(96,63,"10-100HZ",8,1);
+ }
+ if(ZOOM==3) {
+ text(96,63,"100-1KHZ",8,1);
+ }
+ if(ZOOM==4) {
+ text(96,63,"1K-10KHZ",8,1);
+ }
+ if(ZOOM==5) {
+ text(96,63,"10K-100KHZ",10,1);
+ }
+ if(ZOOM==6) {
+ text(92,63,"100K-1MHZ",9,1);
+ }
+
+ }
+ /*-------------------------------------*//*-------------------------------------*//*-------------------------------------*/
+ /*-------------------------------------*//*ZOOM 2: GANANCIA MIXTA*//*-------------------------------------*/
+ if(polpantalla[ZOOM-1]==2) {
+ Hline(0 , 32 , 127 , 1);
+ DivisionesEjeY(2 , 10 , 6 , 1 , 3 , 1);
+ DivisionesEjeX(1 , 125 , 1 , 32 , 3 , 1);
+ if(text_var==1) {
+ text(4,4,"60",2,1);//60
+ text(4,14,"40",2,1);//40
+ text(4,24,"20",2,1);//20
+ text(6,38,"0",1,1);//0
+ text(3,44,"-20",3,1);//-20
+ text(3,54,"-40",3,1);//-40
+ text(3,63,"-60",3,1);//-60
+ text(13,4,"dB",2,1);//dB
+ }
+ if(ZOOM==1) {
+ text(104,4,"1-10HZ",6,1);
+ }
+ if(ZOOM==2) {
+ text(96,4,"10-100HZ",8,1);
+ }
+ if(ZOOM==3) {
+ text(96,4,"100-1KHZ",8,1);
+ }
+ if(ZOOM==4) {
+ text(96,4,"1K-10KHZ",8,1);
+ }
+ if(ZOOM==5) {
+ text(96,4,"10K-100KHZ",10,1);
+ }
+ if(ZOOM==6) {
+ text(92,4,"100K-1MHZ",9,1);
+ }
+
+ }
+ if(habgrafico==1) {
+ graficarZOOM(gananciadB);
+ }
+ /*-------------------------------------*//*-------------------------------------*//*-------------------------------------*/
+}
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+void menu()
+{
+ Cuadrado(0,127,8,63,1);
+ text(57,6,"MENU",4,1);
+ text(7,14,"HABILITAR O DESHABILITAR TEXTO",30,1);
+ text(7,23,"GRAFICO COMPLETO",16,1);
+ text(7,32,"ZOOM",4,1);
+ text(7,41,"TOMAR MEDICIONES Y GRAFICAR",26,1);
+ text(7,50,"MOSTRAR MODULO O FASE",21,1);
+ text(7,59,"INFORMACION ADICIONAL",21,1);
+}
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+void menu2()
+{
+ Cuadrado(0,127,8,63,1);
+ text(57,6,"ZOOM",4,1);
+ text(7,14,"1HZ A 10HZ",10,1);
+ text(7,23,"10HZ A 100HZ",12,1);
+ text(7,32,"100HZ A 1KHZ",12,1);
+ text(7,41,"1KHZ A 10KHZ",12,1);
+ text(7,50,"10KHZ A 100KHZ",14,1);
+ text(7,59,"100KHZ A 1MHZ",13,1);
+}
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+void graficarcompleto(float gananciadB[])
+{
+ /*grafica los valores tomados previamente*/
+ if(modo==modulo) {
+ for(unsigned int i=1 ; i<=cantMediciones ; i++) {
+ if(gananciadB[i]>=-60 && gananciadB[i]<=60)point(10+i,32 - (gananciadB[i]/2.0),0);
+ wait_ms(10);
+ //linea(10+((114/cantMediciones)*(i-1)) , 32 - (gananciadB[i-1]/2.0) , 10+((114/cantMediciones)*i) , 32 - (gananciadB[i]/2.0), 1);
+ //32 - ((20.0 * log10(hola))/2.0)
+ }
+ } else if(modo==fase) {
+ for(unsigned int i=1 ; i<=cantMediciones ; i++) {
+ if(defasaje[i]<=180)point(10+i,32 + (defasaje[i]/6.0),0);
+ else if(defasaje[i]>180 && defasaje[i]<360)point(10+i,32 - ((360 - defasaje[i])/6.0),0);
+ else
+ wait_ms(10);
+ }
+ }
+}
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+void graficarZOOM(float gananciadB[])
+{
+ polaridad();
+ if(modo==modulo) {
+ if(polpantalla[ZOOM-1]==0) {
+ for(unsigned int i=1 ; i<=(cantMediciones/6) ; i++) {
+ 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);
+ }
+ }
+ if(polpantalla[ZOOM-1]==1) {
+ for(unsigned int i=1 ; i<=(cantMediciones/6) ; i++) {
+ 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);
+ }
+ }
+ if(polpantalla[ZOOM-1]==2) {
+ for(unsigned int i=1 ; i<=(cantMediciones/6) ; i++) {
+ 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);
+ }
+ }
+ } else if(modo==fase) {
+ if(polpantalla[ZOOM-1]==0) {
+ for(unsigned int i=1 ; i<=(cantMediciones/6) ; i++) {
+ 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);
+ }
+ }
+ if(polpantalla[ZOOM-1]==1) {
+ for(unsigned int i=1 ; i<=(cantMediciones/6) ; i++) {
+ 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);
+ }
+ }
+ if(polpantalla[ZOOM-1]==2) {
+ for(unsigned int i=1 ; i<=(cantMediciones/6) ; i++) {
+ 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);
+ }
+ }
+ }
+}
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+void PULSADORMENU_fun ()
+{
+ //enum{grafico, menu, ZOOM, menu2};
+ switch(screen) {
+ case graficoComp:
+ if(PULSADORMENU==1) {
+ wait(0.1);
+ if(PULSADORMENU==1)
+ CLRScreen();
+ menu();
+ PC.printf("menu");
+ screen=1;
+ }
+ break;
+ case menuPrincipal:
+ if(PULSADORMENU==1) {
+ wait(0.1);
+ if(PULSADORMENU==1)
+ CLRScreen();
+ /*-------------------------------------*//*OPCION 0: HABILITACION DE TEXTO*//*-------------------------------------*/
+ if(opcion==HDTexto) {
+ text_var = !text_var;
+ grafico();
+ screen = 0;
+ } else if(opcion==GraficoCompleto) {
+ grafico();
+ ZOOM = 0;
+ grafico_var=0;
+ screen = 0;
+ /*-------------------------------------*//*-------------------------------------*//*-------------------------------------*/
+ /*-------------------------------------*//*OPCION 2: ZOOM*//*------------------------------------------------------*/
+ } else if(opcion==Zoom) {
+ menu2();
+ screen = 2;
+ /*-------------------------------------*//*-------------------------------------*//*-------------------------------------*/
+ /*-------------------------------------*//*OPCION 3: TOMA DE VALORES*//*-------------------------------------*/
+ } else if(opcion==TomarMediciones) {
+ if(Rango==100000)cantMediciones=90;
+ else if(Rango==1000000)cantMediciones=108;
+ text(31,15,"TOMANDO VALORES",15,1);
+ point(92,15,1);
+ point(94,15,1);
+ point(96,15,1);
+ Cuadrado(5,121,20,50,1);
+ setFreq(1);
+ wait(0.3);
+ for(unsigned int i= 0 ; i<cantMediciones ; i++ ) {
+ barridoEnFrecuencia0a9(i);
+ Vline(20,6+i,50,1);
+ }
+ setFreq(1000);
+ /*-------------------------------------*//*-------------------------------------*//*-------------------------------------*/
+ CLRScreen();
+ habgrafico=1;
+ ZOOM=0;
+ fc_var=0;
+ grafico();
+ polaridad();
+ VMax=Valormaximo();
+ screen = 0;
+ } else if(opcion==FaseAngulo) {
+ //CLRScreen();
+ if(modo==modulo)modo = fase;
+ else if(modo==fase)modo = modulo;
+ grafico();
+ ZOOM = 0;
+ grafico_var=0;
+ screen = 0;
+ } else if(opcion==InfoAdicional) {
+ //CLRScreen();
+ infoBasica();
+ screen=3;
+ }
+ opcion = 0;
+ }
+ break;
+ case menuZoom:
+ if(PULSADORMENU==1) {
+ wait(0.1);
+ if(PULSADORMENU==1)
+ CLRScreen();
+ ZOOM = opcion + 1;
+ graficoZOOM();
+ grafico_var=1;
+ screen=0;
+ opcion = 0;
+ }
+ break;
+ case Info:
+ if(PULSADORMENU==1) {
+ wait(0.1);
+ if(PULSADORMENU==1)
+ CLRScreen();
+ grafico();
+ screen=0;
+ }
+ break;
+ }
+}
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+unsigned char PULSADORDOWN_fun()
+{
+ if(PULSADORDOWN==1 && (screen == 1 || screen == 2)) {
+ wait(0.1);
+ if(PULSADORDOWN==1) {
+ if(opcion<5 && screen == 1)opcion++;
+ else if(opcion<5 && screen == 2)opcion++;
+ for(unsigned char x=1 ; x < 5 ; x++) {
+ CLRVline(9,x,62);
+ }
+ }
+ }
+ return opcion;
+}
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+unsigned char PULSADORUP_fun()
+{
+ if(PULSADORUP==1 && (screen == 1 || screen == 2)) {
+ wait(0.1);
+ if(PULSADORUP==1) {
+ if(opcion>0)opcion--;
+ for(unsigned char x=1 ; x < 5 ; x++) {
+ CLRVline(9,x,62);
+ }
+ }
+ }
+ return opcion;
+}
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+void PULSADORLEFT_fun()
+{
+ char var=0;
+ if(PULSADORLEFT==1) {
+ wait(0.1);
+ if(PULSADORLEFT==1 && screen ==0) {
+ if(ZOOM == 0)
+ var=1;
+ else var=0;
+ if(ZOOM >= 1) {
+ CLRScreen();
+ ZOOM--;
+ }
+ if (ZOOM == 0) {
+ if(var==0)CLRScreen;
+ grafico();
+ }
+ }
+ if(grafico_var==1 && ZOOM >= 1) {
+ graficoZOOM();
+ if(habgrafico==1) {
+ graficarZOOM(gananciadB);
+ }
+ }
+ }
+}
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+void PULSADORRIGHT_fun()
+{
+ if(PULSADORRIGHT==1 && screen ==0) {
+ wait(0.1);
+ if(PULSADORRIGHT==1) {
+ if(ZOOM < 6) {
+ if(ZOOM==0)grafico_var=1;
+ CLRScreen();
+ ZOOM++;
+ if(grafico_var==1) graficoZOOM();
+ if(habgrafico==1) {
+ graficarZOOM(gananciadB);
+ }
+ }
+ }
+ }
+}
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////
+unsigned char screen_pass()
+{
+ return screen;
+}
+
+void MedidorDeTiempo()
+{
+ if(hab_tiempo)
+ tiempo++;
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GraficadorDeBode.h Thu Dec 06 00:07:02 2018 +0000 @@ -0,0 +1,18 @@ +void grafico(void); +void menu(void); +void graficoZOOM(void); +void graficarcompleto(float gananciadB[]); +void graficarZOOM(float gananciadB[]); +void PULSADORMENU_fun (void); +unsigned char PULSADORDOWN_fun(void); +unsigned char PULSADORUP_fun(void); +void PULSADORLEFT_fun(void); +void PULSADORRIGHT_fun(void); +unsigned char screen_pass(void); +void barridoEnFrecuencia0a9(unsigned char i); +void menu2(void); +void FrecuenciaDeCorte(void); +void infoBasica(void); +void polaridad(void); +float Valormaximo (void); +void MedidorDeTiempo(void); \ No newline at end of file