Envió de palabra clave desde celular a modem gsm, mensaje PWM seguido del duty cycle configura PWM de kl25z y mensaje GPS retorna ubicación

Dependencies:   GPS mbed

Committer:
SSJprocesa
Date:
Tue Nov 29 22:30:48 2016 +0000
Revision:
0:591a9df7836c
Mensajes de configuraci?n PWM y GPS con ubicaci?n satelital

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SSJprocesa 0:591a9df7836c 1 #include "mbed.h"
SSJprocesa 0:591a9df7836c 2 #include "string.h"
SSJprocesa 0:591a9df7836c 3 #include "math.h"
SSJprocesa 0:591a9df7836c 4 #include "GPS.h"
SSJprocesa 0:591a9df7836c 5 //---Configuraciones---
SSJprocesa 0:591a9df7836c 6 Timer t;
SSJprocesa 0:591a9df7836c 7 Serial pc(USBTX,USBRX); //Configura puerto UART de la
SSJprocesa 0:591a9df7836c 8 Serial GSM(PTE22, PTE23);//Configura la entrada serial del celular
SSJprocesa 0:591a9df7836c 9 DigitalOut ledr(PTE29);//Led indicador
SSJprocesa 0:591a9df7836c 10 DigitalOut myled(LED1);
SSJprocesa 0:591a9df7836c 11 DigitalIn chan(PTC3);//Pulsador para iniciar la configuración del celular
SSJprocesa 0:591a9df7836c 12 GPS gps(PTE0,PTE1);//configuración de los pines de comunicación con el GPS
SSJprocesa 0:591a9df7836c 13 PwmOut PWM(PTA12);// salida pwm
SSJprocesa 0:591a9df7836c 14 AnalogIn Vin(PTB2); // entrada para leer el pwm
SSJprocesa 0:591a9df7836c 15 //---Subrutinas---
SSJprocesa 0:591a9df7836c 16 int readBuffer(char *buffer,int count);//Subrutina para leer el buffer
SSJprocesa 0:591a9df7836c 17 void enviar(int LENIN1,char *DS,char *numero);//subrutina para enviar mensaje
SSJprocesa 0:591a9df7836c 18 void borrar_todo(void);//subrutina para reiniciar las variables
SSJprocesa 0:591a9df7836c 19 void config(void);//configuración del celular
SSJprocesa 0:591a9df7836c 20 //---Variables para paquetes---
SSJprocesa 0:591a9df7836c 21 char buffer[100],Bkupbuffer[100];//buffer's de almacenación de mensajes
SSJprocesa 0:591a9df7836c 22 char celular[10];
SSJprocesa 0:591a9df7836c 23 char ENCA[255]={"http://maps.google.com/maps?q="}, VOL[255]={"El voltaje promedio es: ="},Confirmacion[255]={"ESTOY EN LA PISCINA"};//para enviar las coordenadas en google;//para enviar las coordenadas en google
SSJprocesa 0:591a9df7836c 24 char DS[255];
SSJprocesa 0:591a9df7836c 25 int LENIN=0,LENIN1=0,LENOUT=0;//Tamaño de los datos de la función de conversión de entrada y salida
SSJprocesa 0:591a9df7836c 26 //---Variables para coordenadas---
SSJprocesa 0:591a9df7836c 27 char coorden[50]={NULL}, aux[50]={NULL};
SSJprocesa 0:591a9df7836c 28 int aa=1, num=0;
SSJprocesa 0:591a9df7836c 29 int longi_entera=0,lati_entera=0,longi_decimal=0,lati_decimal=0;
SSJprocesa 0:591a9df7836c 30 //---Variables como contadores---
SSJprocesa 0:591a9df7836c 31 int i=0,count=0,bandera=0,gh=0,negativo=0,K=0,C=0,p=0,j=0,z=0,ro=0,st=0,sol=0;
SSJprocesa 0:591a9df7836c 32 //*****************************************************************************************************************************************
SSJprocesa 0:591a9df7836c 33 //*****************************************************************************************************************************************
SSJprocesa 0:591a9df7836c 34 //es recomendable iniciar siempre oprimiendo el boton de configuración.
SSJprocesa 0:591a9df7836c 35 int main(void)
SSJprocesa 0:591a9df7836c 36 { // a.
SSJprocesa 0:591a9df7836c 37 inicio:
SSJprocesa 0:591a9df7836c 38 ledr=1;
SSJprocesa 0:591a9df7836c 39 borrar_todo();//Ejecuta la rutina que reinicia todas las variables del programaledr=1;
SSJprocesa 0:591a9df7836c 40 GSM.baud(9600);//configura los baudios de la comunicación en 9600
SSJprocesa 0:591a9df7836c 41 GSM.format(8,Serial::None,1); //configura el formato de los datos de la UART
SSJprocesa 0:591a9df7836c 42 wait(1);
SSJprocesa 0:591a9df7836c 43 pc.printf("conectado al pc \r\n ");//indicador de conexión
SSJprocesa 0:591a9df7836c 44 GSM.printf("AT+CMGD=1\r\n");//Borrar los mensajes del celular
SSJprocesa 0:591a9df7836c 45 while(1)
SSJprocesa 0:591a9df7836c 46 {//a.1
SSJprocesa 0:591a9df7836c 47 //________________________________________________________________________________________________________________________________________
SSJprocesa 0:591a9df7836c 48 if(aa==1)//si se preciona, se procede a cofigurar el celular con comandos AT
SSJprocesa 0:591a9df7836c 49 {//a.1.1 se cierra en linea 53
SSJprocesa 0:591a9df7836c 50 config();
SSJprocesa 0:591a9df7836c 51 aa=0;
SSJprocesa 0:591a9df7836c 52 myled=1;
SSJprocesa 0:591a9df7836c 53 }//ac.1.1 cierra linea 53,
SSJprocesa 0:591a9df7836c 54 //________________________________________________________________________________________________________________________________________
SSJprocesa 0:591a9df7836c 55 if (GSM.readable()) //esperar llegada de mensaje del celular
SSJprocesa 0:591a9df7836c 56 { // a.1.2 se cierra en linea 71
SSJprocesa 0:591a9df7836c 57 readBuffer(buffer,100);//guardar el mensaje en el buffer
SSJprocesa 0:591a9df7836c 58 i=0;
SSJprocesa 0:591a9df7836c 59 pc.printf(buffer);//imprimir el mensaje
SSJprocesa 0:591a9df7836c 60 if(buffer[14]=='1'||buffer[6]=='R'){bandera++;}
SSJprocesa 0:591a9df7836c 61 if(bandera==2)//compara si ya llegó el mensaje al celular y hay que borrarlo
SSJprocesa 0:591a9df7836c 62 {//a.1.2.1 se cierra en linea 62
SSJprocesa 0:591a9df7836c 63 for(gh=0;gh<=99;gh++)//guardamos el mensaje almacenado en el buffer en una variable auxiliar
SSJprocesa 0:591a9df7836c 64 { //a.1.2.1.1 se cieerra en lina 66
SSJprocesa 0:591a9df7836c 65 Bkupbuffer[gh]=buffer[gh];
SSJprocesa 0:591a9df7836c 66 }// ac1.2.1.1 cierra linea 64
SSJprocesa 0:591a9df7836c 67 pc.printf("\r\n%c\r\n %c\r\n %c\r\n %c\r\n",Bkupbuffer[68],Bkupbuffer[69],Bkupbuffer[70],Bkupbuffer[71]);
SSJprocesa 0:591a9df7836c 68 wait(0.5);
SSJprocesa 0:591a9df7836c 69 GSM.printf("AT+CMGD=1\r\n");//borrar mensaje recibido
SSJprocesa 0:591a9df7836c 70 bandera=0;
SSJprocesa 0:591a9df7836c 71 } // cierra linea 62
SSJprocesa 0:591a9df7836c 72 } // cierra lina 56
SSJprocesa 0:591a9df7836c 73 //________________________________________________________________________________________________________________________________________
SSJprocesa 0:591a9df7836c 74 if((buffer[10]=='S')&& (buffer[11]=='M'))//compara si el mensaje es un mensaje de texto que llegó al celular
SSJprocesa 0:591a9df7836c 75 { // se cierra en linea 83
SSJprocesa 0:591a9df7836c 76 pc.printf("\r\n Llego mensaje\r\n ");
SSJprocesa 0:591a9df7836c 77 buffer[10]=' ';//limpia los espacios del Buffer
SSJprocesa 0:591a9df7836c 78 buffer[11]=' ';
SSJprocesa 0:591a9df7836c 79 GSM.printf("AT+CMGR=%c\r\n",buffer[14]);//solicitar mesaje al celular
SSJprocesa 0:591a9df7836c 80 //pc.printf("AT+CMGR=%c\r\n",buffer[14]);
SSJprocesa 0:591a9df7836c 81 buffer[14]=' ';
SSJprocesa 0:591a9df7836c 82 i=0;
SSJprocesa 0:591a9df7836c 83 } // cierra linea 75
SSJprocesa 0:591a9df7836c 84 //________________________________________________________________________________________________________________________________________
SSJprocesa 0:591a9df7836c 85 if(Bkupbuffer[68]=='4'&& Bkupbuffer[69]=='7'&&Bkupbuffer[70]=='E'&& Bkupbuffer[71]=='8'&& Bkupbuffer[72]=='1'&& Bkupbuffer[73]=='4')//recibió ELE (Extincion Level Event)
SSJprocesa 0:591a9df7836c 86 {
SSJprocesa 0:591a9df7836c 87 buffer[68]=' ';
SSJprocesa 0:591a9df7836c 88 Bkupbuffer[68]=' ';
SSJprocesa 0:591a9df7836c 89 for(st=68;st<=73;st++)
SSJprocesa 0:591a9df7836c 90 {// se cierra en linea 92
SSJprocesa 0:591a9df7836c 91 Bkupbuffer[st]=' ';//limpia el espacio del buffer para evitar ingresar de nuevo, si no ha llegado otro mensaje con la contraseña
SSJprocesa 0:591a9df7836c 92 }// cierra linea 90
SSJprocesa 0:591a9df7836c 93 pc.printf(" comparacion de contrasena ok \r\n");
SSJprocesa 0:591a9df7836c 94 pc.printf("Adquiriendo coordenadas del GPS...\r\n");//Adquiriendo coordenadas del GPS...
SSJprocesa 0:591a9df7836c 95 if(gps.sample())//Si las coordenadas se obtienen correctamente:
SSJprocesa 0:591a9df7836c 96 {
SSJprocesa 0:591a9df7836c 97 pc.printf("coordenadas recibidas ");
SSJprocesa 0:591a9df7836c 98 for(ro=30;ro<=255;ro++)
SSJprocesa 0:591a9df7836c 99 { // se cierra en 101
SSJprocesa 0:591a9df7836c 100 ENCA[ro]='\0';
SSJprocesa 0:591a9df7836c 101 } // cierra 99
SSJprocesa 0:591a9df7836c 102 ro=0;
SSJprocesa 0:591a9df7836c 103
SSJprocesa 0:591a9df7836c 104 longi_entera=(int)gps.longitude;//Adquiere la parte entera de la longitud del GPS
SSJprocesa 0:591a9df7836c 105 pc.printf("d %f",longi_entera);
SSJprocesa 0:591a9df7836c 106 lati_entera=(int)gps.latitude;//Adquiere la parte entera de la latitud del GPS
SSJprocesa 0:591a9df7836c 107 longi_decimal=abs((gps.longitude-(int)gps.longitude)*1000000);//Adquiere el valor absoluto de la longitud del GPS
SSJprocesa 0:591a9df7836c 108 lati_decimal=abs((gps.latitude-(int)gps.latitude)*1000000);//Adquiere el valor absoluto de la longitud del GPS
SSJprocesa 0:591a9df7836c 109 pc.printf("http://maps.google.com/maps?q=%f,%f\r\n", gps.latitude,gps.longitude);//encabezado que será impreso en el terminal y luego en el mensaje
SSJprocesa 0:591a9df7836c 110 while(longi_decimal>0)
SSJprocesa 0:591a9df7836c 111 {//se cierra en 116
SSJprocesa 0:591a9df7836c 112 coorden[j]=(longi_decimal%10)+48;//se toma la parte decimal de la longitud y se pasa a ASCII y guarda en el vector coorden
SSJprocesa 0:591a9df7836c 113 longi_decimal=longi_decimal/10;//se divide por 10 para hacer mas iteracines en caso de que el número de elementos seamayor a uno
SSJprocesa 0:591a9df7836c 114 pc.printf("%c",coorden[j]);
SSJprocesa 0:591a9df7836c 115 j++;
SSJprocesa 0:591a9df7836c 116 }// cierra 111
SSJprocesa 0:591a9df7836c 117 coorden[j]='.';//Se adiciona el punto, para la parte decimal
SSJprocesa 0:591a9df7836c 118 pc.printf("%c",coorden[j]);//se muestra en el terminal la posición j de la longitud
SSJprocesa 0:591a9df7836c 119 j++;
SSJprocesa 0:591a9df7836c 120 if(longi_entera<0)//si la longitud es menor a cero se multiplica por -1
SSJprocesa 0:591a9df7836c 121 {// se cierra en 121
SSJprocesa 0:591a9df7836c 122 negativo=1;
SSJprocesa 0:591a9df7836c 123 longi_entera=longi_entera*-1;
SSJprocesa 0:591a9df7836c 124 }//cierra 121
SSJprocesa 0:591a9df7836c 125 while(longi_entera>0)
SSJprocesa 0:591a9df7836c 126 {// se cierra en 131
SSJprocesa 0:591a9df7836c 127 coorden[j]=(longi_entera%10)+48;//se toma la parte entera de la longitud y se pasa a ASCII y guarda en el vector coorden
SSJprocesa 0:591a9df7836c 128 longi_entera=longi_entera/10;
SSJprocesa 0:591a9df7836c 129 pc.printf("%c",coorden[j]);
SSJprocesa 0:591a9df7836c 130 j++;
SSJprocesa 0:591a9df7836c 131 }// cierra 126
SSJprocesa 0:591a9df7836c 132 if(negativo==1)//si negativo es 1 al vector de caracteres se le adiciona un '-'
SSJprocesa 0:591a9df7836c 133 {// se cierra en 137
SSJprocesa 0:591a9df7836c 134 coorden[j]='-';
SSJprocesa 0:591a9df7836c 135 pc.printf("%c",coorden[j]);
SSJprocesa 0:591a9df7836c 136 j++;
SSJprocesa 0:591a9df7836c 137 }// cierra 133
SSJprocesa 0:591a9df7836c 138 negativo=0;//reinicia la variable para hacer lo mismo con la longitud
SSJprocesa 0:591a9df7836c 139 coorden[j]=',';
SSJprocesa 0:591a9df7836c 140 pc.printf("%c",coorden[j]);
SSJprocesa 0:591a9df7836c 141 j++;
SSJprocesa 0:591a9df7836c 142 while(lati_decimal>0)
SSJprocesa 0:591a9df7836c 143 {// se cierra en 148
SSJprocesa 0:591a9df7836c 144 coorden[j]=(lati_decimal%10)+48;//se toma la parte decimal de la latitud y se pasa a ASCII y guarda en el vector coorden
SSJprocesa 0:591a9df7836c 145 lati_decimal=lati_decimal/10;
SSJprocesa 0:591a9df7836c 146 pc.printf("%c",coorden[j]);
SSJprocesa 0:591a9df7836c 147 j++;
SSJprocesa 0:591a9df7836c 148 }//cierra 143
SSJprocesa 0:591a9df7836c 149 coorden[j]='.';//adiciona el punto al vector para indicar la parte decimal
SSJprocesa 0:591a9df7836c 150 pc.printf("%c",coorden[j]);
SSJprocesa 0:591a9df7836c 151 j++;
SSJprocesa 0:591a9df7836c 152 if(lati_entera<0)
SSJprocesa 0:591a9df7836c 153 {// se cierrra en 156
SSJprocesa 0:591a9df7836c 154 negativo=1;
SSJprocesa 0:591a9df7836c 155 lati_entera=lati_entera*-1;
SSJprocesa 0:591a9df7836c 156 }// cierra
SSJprocesa 0:591a9df7836c 157 while(lati_entera>0)
SSJprocesa 0:591a9df7836c 158 {
SSJprocesa 0:591a9df7836c 159 coorden[j]=(lati_entera%10)+48;//se toma la parte entera de la longitud y se pasa a ASCII y guarda en el vector coorden
SSJprocesa 0:591a9df7836c 160 lati_entera=lati_entera/10;
SSJprocesa 0:591a9df7836c 161 pc.printf("%c",coorden[j]);
SSJprocesa 0:591a9df7836c 162 j++;
SSJprocesa 0:591a9df7836c 163 }
SSJprocesa 0:591a9df7836c 164 if(negativo==1)
SSJprocesa 0:591a9df7836c 165 {
SSJprocesa 0:591a9df7836c 166 coorden[j]='-';
SSJprocesa 0:591a9df7836c 167 pc.printf("%c",coorden[j]);
SSJprocesa 0:591a9df7836c 168 j++;
SSJprocesa 0:591a9df7836c 169 }
SSJprocesa 0:591a9df7836c 170 pc.printf("\r\n");
SSJprocesa 0:591a9df7836c 171 j--;
SSJprocesa 0:591a9df7836c 172 z=strlen(ENCA);//hace z = al tamaño de la variable ENCA
SSJprocesa 0:591a9df7836c 173 for(i=j;i>=0;i--)
SSJprocesa 0:591a9df7836c 174 {
SSJprocesa 0:591a9df7836c 175 ENCA[z]=coorden[i];//guarda las coordenadas en un vector auxiliar ENCA en orden
SSJprocesa 0:591a9df7836c 176 z++;
SSJprocesa 0:591a9df7836c 177 }
SSJprocesa 0:591a9df7836c 178 pc.printf(ENCA);
SSJprocesa 0:591a9df7836c 179 pc.printf("\r\n");
SSJprocesa 0:591a9df7836c 180 LENIN1=strlen(ENCA);//toma el tamaño del vector ENCA
SSJprocesa 0:591a9df7836c 181 for (i=0;i < LENIN1;i++)//algoritmo para pasar de septetos a octetos
SSJprocesa 0:591a9df7836c 182 {
SSJprocesa 0:591a9df7836c 183 DS[i]=ENCA[i+C]>>K | ENCA[i+C+1]<<(7-K);
SSJprocesa 0:591a9df7836c 184 if (DS[i]==0x00) {LENOUT=i; goto salir;}//cuando
SSJprocesa 0:591a9df7836c 185 K++;
SSJprocesa 0:591a9df7836c 186 if (K==7) {K=0;C++;} // se chequea que ya se acabaron los bits en un ciclo de conversion.
SSJprocesa 0:591a9df7836c 187 }
SSJprocesa 0:591a9df7836c 188 //--------------------------------------------------------------
SSJprocesa 0:591a9df7836c 189 salir: for(i=38;i<48;i++)//Se extrae el número del celular
SSJprocesa 0:591a9df7836c 190 {
SSJprocesa 0:591a9df7836c 191 celular[i-38]=Bkupbuffer[i];//toma el número del celular trocado en las posiciones del 38 al 48 almacenadas en el buffer
SSJprocesa 0:591a9df7836c 192 }//de respaldo
SSJprocesa 0:591a9df7836c 193 wait(0.5);
SSJprocesa 0:591a9df7836c 194 enviar(LENIN1,DS,celular);//Ejecuta la rutina de envío de mensaje, con el tamaño del mensaje, las coordenadas en septetos y el número del celular
SSJprocesa 0:591a9df7836c 195 wait(14);
SSJprocesa 0:591a9df7836c 196 goto inicio;
SSJprocesa 0:591a9df7836c 197 }//if GPS
SSJprocesa 0:591a9df7836c 198 else
SSJprocesa 0:591a9df7836c 199 { pc.printf(" CONTRASENA INVALIDA \r\n");
SSJprocesa 0:591a9df7836c 200 for(i=38;i<48;i++)//Se extrae el número del celular
SSJprocesa 0:591a9df7836c 201 {
SSJprocesa 0:591a9df7836c 202 celular[i-38]=Bkupbuffer[i];//toma el número del celular trocado en las posiciones del 38 al 48 almacenadas en el buffer
SSJprocesa 0:591a9df7836c 203 }//de respaldo
SSJprocesa 0:591a9df7836c 204 wait(0.5);
SSJprocesa 0:591a9df7836c 205 GSM.printf("at+cmgs=%d\r\n",37);//inicio de envío de mensaje
SSJprocesa 0:591a9df7836c 206 pc.printf("enviando mensaje\r\n");
SSJprocesa 0:591a9df7836c 207 pc.printf("at+cmgs=%d\r\n",37);
SSJprocesa 0:591a9df7836c 208 wait(0.5);
SSJprocesa 0:591a9df7836c 209 GSM.printf("0011000A91");
SSJprocesa 0:591a9df7836c 210 pc.printf("0011000A91");
SSJprocesa 0:591a9df7836c 211 for(p=0;p<10;p++)
SSJprocesa 0:591a9df7836c 212 {
SSJprocesa 0:591a9df7836c 213 GSM.printf("%c",celular[p]);
SSJprocesa 0:591a9df7836c 214 pc.printf("%c",celular[p]);
SSJprocesa 0:591a9df7836c 215 }
SSJprocesa 0:591a9df7836c 216 GSM.printf("0000AA1B45B9FC2D6781D26E7AD94D2F83DAE139881E9693CB2E970B");//Relleno + Número de octetos + mensaje
SSJprocesa 0:591a9df7836c 217 pc.printf("0000AA1B45B9FC2D6781D26E7AD94D2F83DAE139881E9693CB2E970B");//Error, intente mas tarde...
SSJprocesa 0:591a9df7836c 218 wait(0.5);
SSJprocesa 0:591a9df7836c 219 GSM.putc(0x1A);//fin de envío de mensaje
SSJprocesa 0:591a9df7836c 220 for(ro=0;ro<=100;ro++)//borrar el buffer y el respaldo para habilitar una nueva recepción
SSJprocesa 0:591a9df7836c 221 {
SSJprocesa 0:591a9df7836c 222 buffer[ro]='\0';
SSJprocesa 0:591a9df7836c 223 Bkupbuffer[ro]='\0';
SSJprocesa 0:591a9df7836c 224 }
SSJprocesa 0:591a9df7836c 225 ro=0;
SSJprocesa 0:591a9df7836c 226 wait(0.5);
SSJprocesa 0:591a9df7836c 227 }
SSJprocesa 0:591a9df7836c 228 }
SSJprocesa 0:591a9df7836c 229 // LECTURA DE LA PALABRA DE PWM seguida del duty cicle en % ejemplo PWM43 esto configura la salida del pwm en un 43%
SSJprocesa 0:591a9df7836c 230 if(Bkupbuffer[68]=='D'&& Bkupbuffer[69]=='0'&&Bkupbuffer[70]=='6'&& Bkupbuffer[71]=='B')//recibió PWM y verifica los siguientes dos lugares para parametrizar el pwm
SSJprocesa 0:591a9df7836c 231 {
SSJprocesa 0:591a9df7836c 232 pc.printf("Comprobacion de palabra clave para el pwm ok \n\r");
SSJprocesa 0:591a9df7836c 233 if (Bkupbuffer[72]=='1' && Bkupbuffer[73]=='3' ) // Verifica si el duty cicle del pwm esta entre 0-9,
SSJprocesa 0:591a9df7836c 234 {
SSJprocesa 0:591a9df7836c 235 // //////////aux[1]==0; // acomoda el dato para configurar el pwm
SSJprocesa 0:591a9df7836c 236 Bkupbuffer[74]=Bkupbuffer[74];
SSJprocesa 0:591a9df7836c 237 PWM.period(0.010); // set PWM period to 10 ms
SSJprocesa 0:591a9df7836c 238 if ( Bkupbuffer[74]=='0')
SSJprocesa 0:591a9df7836c 239 {
SSJprocesa 0:591a9df7836c 240 PWM=0.0;
SSJprocesa 0:591a9df7836c 241 }
SSJprocesa 0:591a9df7836c 242 if (Bkupbuffer[74]=='1')
SSJprocesa 0:591a9df7836c 243 {
SSJprocesa 0:591a9df7836c 244 PWM=0.01;
SSJprocesa 0:591a9df7836c 245 }
SSJprocesa 0:591a9df7836c 246 if (Bkupbuffer[74]=='2')
SSJprocesa 0:591a9df7836c 247 {
SSJprocesa 0:591a9df7836c 248 PWM=0.02;
SSJprocesa 0:591a9df7836c 249 }
SSJprocesa 0:591a9df7836c 250 if (Bkupbuffer[74]=='3')
SSJprocesa 0:591a9df7836c 251 {
SSJprocesa 0:591a9df7836c 252 PWM=0.03;
SSJprocesa 0:591a9df7836c 253 }
SSJprocesa 0:591a9df7836c 254 if (Bkupbuffer[74]=='4')
SSJprocesa 0:591a9df7836c 255 {
SSJprocesa 0:591a9df7836c 256 PWM=0.04;
SSJprocesa 0:591a9df7836c 257 }
SSJprocesa 0:591a9df7836c 258 if (Bkupbuffer[74]=='5')
SSJprocesa 0:591a9df7836c 259 {
SSJprocesa 0:591a9df7836c 260 PWM=0.05;
SSJprocesa 0:591a9df7836c 261 }
SSJprocesa 0:591a9df7836c 262 if (Bkupbuffer[74]=='6')
SSJprocesa 0:591a9df7836c 263 {
SSJprocesa 0:591a9df7836c 264 PWM=0.06;
SSJprocesa 0:591a9df7836c 265 }
SSJprocesa 0:591a9df7836c 266 if (Bkupbuffer[74]=='7')
SSJprocesa 0:591a9df7836c 267 {
SSJprocesa 0:591a9df7836c 268 PWM=0.07;
SSJprocesa 0:591a9df7836c 269 }
SSJprocesa 0:591a9df7836c 270 if (Bkupbuffer[74]=='8')
SSJprocesa 0:591a9df7836c 271 {
SSJprocesa 0:591a9df7836c 272 PWM=0.08;
SSJprocesa 0:591a9df7836c 273 }
SSJprocesa 0:591a9df7836c 274 if (Bkupbuffer[74]=='9')
SSJprocesa 0:591a9df7836c 275 {
SSJprocesa 0:591a9df7836c 276 PWM=0.09;
SSJprocesa 0:591a9df7836c 277 }
SSJprocesa 0:591a9df7836c 278 pc.printf("Voltaje leido del duty cycle = \n\r");
SSJprocesa 0:591a9df7836c 279 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
SSJprocesa 0:591a9df7836c 280 }
SSJprocesa 0:591a9df7836c 281
SSJprocesa 0:591a9df7836c 282
SSJprocesa 0:591a9df7836c 283 if (Bkupbuffer[72]=='3' && Bkupbuffer[73]=='3' ) // verifica si esta entre 10-19
SSJprocesa 0:591a9df7836c 284 {
SSJprocesa 0:591a9df7836c 285 ////////aux[1]=1; // acomoda el dato para configurar el pwm
SSJprocesa 0:591a9df7836c 286 Bkupbuffer[74]=Bkupbuffer[74];
SSJprocesa 0:591a9df7836c 287 PWM.period(0.010); // set PWM period to 10 ms
SSJprocesa 0:591a9df7836c 288 if ( Bkupbuffer[74]=='0')
SSJprocesa 0:591a9df7836c 289 {
SSJprocesa 0:591a9df7836c 290 PWM=0.0;
SSJprocesa 0:591a9df7836c 291 }
SSJprocesa 0:591a9df7836c 292 if (Bkupbuffer[74]=='1')
SSJprocesa 0:591a9df7836c 293 {
SSJprocesa 0:591a9df7836c 294 PWM=0.11;
SSJprocesa 0:591a9df7836c 295 }
SSJprocesa 0:591a9df7836c 296 if (Bkupbuffer[74]=='2')
SSJprocesa 0:591a9df7836c 297 { PWM=0.12;}
SSJprocesa 0:591a9df7836c 298 if (Bkupbuffer[74]=='3')
SSJprocesa 0:591a9df7836c 299 {
SSJprocesa 0:591a9df7836c 300 PWM=0.13;
SSJprocesa 0:591a9df7836c 301 }
SSJprocesa 0:591a9df7836c 302 if (Bkupbuffer[74]=='4')
SSJprocesa 0:591a9df7836c 303 {
SSJprocesa 0:591a9df7836c 304 PWM=0.14;
SSJprocesa 0:591a9df7836c 305 }
SSJprocesa 0:591a9df7836c 306 if (Bkupbuffer[74]=='5')
SSJprocesa 0:591a9df7836c 307 {
SSJprocesa 0:591a9df7836c 308 PWM=0.15;
SSJprocesa 0:591a9df7836c 309 }
SSJprocesa 0:591a9df7836c 310 if (Bkupbuffer[74]=='6')
SSJprocesa 0:591a9df7836c 311 {
SSJprocesa 0:591a9df7836c 312 PWM=0.16;
SSJprocesa 0:591a9df7836c 313 }
SSJprocesa 0:591a9df7836c 314 if (Bkupbuffer[74]=='7')
SSJprocesa 0:591a9df7836c 315 {
SSJprocesa 0:591a9df7836c 316 PWM=0.17;
SSJprocesa 0:591a9df7836c 317 }
SSJprocesa 0:591a9df7836c 318 if (Bkupbuffer[74]=='8')
SSJprocesa 0:591a9df7836c 319 {
SSJprocesa 0:591a9df7836c 320 PWM=0.18;
SSJprocesa 0:591a9df7836c 321 }
SSJprocesa 0:591a9df7836c 322 if (Bkupbuffer[74]=='9')
SSJprocesa 0:591a9df7836c 323 {
SSJprocesa 0:591a9df7836c 324 PWM=0.19;
SSJprocesa 0:591a9df7836c 325 }
SSJprocesa 0:591a9df7836c 326 pc.printf("Voltaje leido del duty cycle = \n\r");
SSJprocesa 0:591a9df7836c 327 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
SSJprocesa 0:591a9df7836c 328
SSJprocesa 0:591a9df7836c 329 }
SSJprocesa 0:591a9df7836c 330
SSJprocesa 0:591a9df7836c 331 if (Bkupbuffer[72]=='5' && Bkupbuffer[73]=='3' ) // verifica si esta entre 20-19
SSJprocesa 0:591a9df7836c 332 {
SSJprocesa 0:591a9df7836c 333 ////////aux[1]='2'; // acomoda el dato para configurar el pwm
SSJprocesa 0:591a9df7836c 334 Bkupbuffer[74]=Bkupbuffer[74];
SSJprocesa 0:591a9df7836c 335 PWM.period(0.010); // set PWM period to 10 ms
SSJprocesa 0:591a9df7836c 336 if ( Bkupbuffer[74]=='0')
SSJprocesa 0:591a9df7836c 337 { PWM=0.20;}
SSJprocesa 0:591a9df7836c 338 if (Bkupbuffer[74]=='1')
SSJprocesa 0:591a9df7836c 339 { PWM=0.21;}
SSJprocesa 0:591a9df7836c 340 if (Bkupbuffer[74]=='2')
SSJprocesa 0:591a9df7836c 341 { PWM=0.22;}
SSJprocesa 0:591a9df7836c 342 if (Bkupbuffer[74]=='3')
SSJprocesa 0:591a9df7836c 343 { PWM=0.23;}
SSJprocesa 0:591a9df7836c 344 if (Bkupbuffer[74]=='4')
SSJprocesa 0:591a9df7836c 345 { PWM=0.24;}
SSJprocesa 0:591a9df7836c 346 if (Bkupbuffer[74]=='5')
SSJprocesa 0:591a9df7836c 347 { PWM=0.25;}
SSJprocesa 0:591a9df7836c 348 if (Bkupbuffer[74]=='6')
SSJprocesa 0:591a9df7836c 349 { PWM=0.26;}
SSJprocesa 0:591a9df7836c 350 if (Bkupbuffer[74]=='7')
SSJprocesa 0:591a9df7836c 351 {PWM=0.27;}
SSJprocesa 0:591a9df7836c 352 if (Bkupbuffer[74]=='8')
SSJprocesa 0:591a9df7836c 353 { PWM=0.28;}
SSJprocesa 0:591a9df7836c 354 if (Bkupbuffer[74]=='9')
SSJprocesa 0:591a9df7836c 355 {
SSJprocesa 0:591a9df7836c 356 PWM=0.29;
SSJprocesa 0:591a9df7836c 357 }
SSJprocesa 0:591a9df7836c 358 pc.printf("Voltaje leido del duty cycle = \n\r");
SSJprocesa 0:591a9df7836c 359 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
SSJprocesa 0:591a9df7836c 360
SSJprocesa 0:591a9df7836c 361 }
SSJprocesa 0:591a9df7836c 362 if (Bkupbuffer[72]=='7' && Bkupbuffer[73]=='3' ) // verifica si esta entre 30-39
SSJprocesa 0:591a9df7836c 363 {
SSJprocesa 0:591a9df7836c 364 ////////////////////aux[1]=3; // acomoda el dato para configurar el pwm
SSJprocesa 0:591a9df7836c 365 Bkupbuffer[74]=Bkupbuffer[74];
SSJprocesa 0:591a9df7836c 366 PWM.period(0.010); // set PWM period to 10 ms
SSJprocesa 0:591a9df7836c 367 if ( Bkupbuffer[74]=='0')
SSJprocesa 0:591a9df7836c 368 { PWM=0.30;}
SSJprocesa 0:591a9df7836c 369 if (Bkupbuffer[74]=='1')
SSJprocesa 0:591a9df7836c 370 { PWM=0.31;}
SSJprocesa 0:591a9df7836c 371 if (Bkupbuffer[74]=='2')
SSJprocesa 0:591a9df7836c 372 { PWM=0.32;}
SSJprocesa 0:591a9df7836c 373 if (Bkupbuffer[74]=='3')
SSJprocesa 0:591a9df7836c 374 { PWM=0.33;}
SSJprocesa 0:591a9df7836c 375 if (Bkupbuffer[74]=='4')
SSJprocesa 0:591a9df7836c 376 { PWM=0.34;}
SSJprocesa 0:591a9df7836c 377 if (Bkupbuffer[74]=='5')
SSJprocesa 0:591a9df7836c 378 { PWM=0.35;
SSJprocesa 0:591a9df7836c 379 pc.printf("duty cycle = 35% \n\r");
SSJprocesa 0:591a9df7836c 380 }
SSJprocesa 0:591a9df7836c 381 if (Bkupbuffer[74]=='6')
SSJprocesa 0:591a9df7836c 382 { PWM=0.36;}
SSJprocesa 0:591a9df7836c 383 if (Bkupbuffer[74]=='7')
SSJprocesa 0:591a9df7836c 384 {PWM=0.37;}
SSJprocesa 0:591a9df7836c 385 if (Bkupbuffer[74]=='8')
SSJprocesa 0:591a9df7836c 386 { PWM=0.38;}
SSJprocesa 0:591a9df7836c 387 if (Bkupbuffer[74]=='9')
SSJprocesa 0:591a9df7836c 388 {
SSJprocesa 0:591a9df7836c 389 PWM=0.39;
SSJprocesa 0:591a9df7836c 390 }
SSJprocesa 0:591a9df7836c 391 pc.printf("Voltaje leido del duty cycle = \n\r");
SSJprocesa 0:591a9df7836c 392 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
SSJprocesa 0:591a9df7836c 393
SSJprocesa 0:591a9df7836c 394 }
SSJprocesa 0:591a9df7836c 395 if (Bkupbuffer[72]=='9' && Bkupbuffer[73]=='3' ) // verifica si esta entre 40-19
SSJprocesa 0:591a9df7836c 396 {
SSJprocesa 0:591a9df7836c 397 ////////aux[1]=4; // acomoda el dato para configurar el pwm
SSJprocesa 0:591a9df7836c 398 Bkupbuffer[74]=Bkupbuffer[74];
SSJprocesa 0:591a9df7836c 399 PWM.period(0.010); // set PWM period to 10 ms
SSJprocesa 0:591a9df7836c 400 if ( Bkupbuffer[74]=='0')
SSJprocesa 0:591a9df7836c 401 { PWM=0.40;}
SSJprocesa 0:591a9df7836c 402 if (Bkupbuffer[74]=='1')
SSJprocesa 0:591a9df7836c 403 { PWM=0.41;}
SSJprocesa 0:591a9df7836c 404 if (Bkupbuffer[74]=='2')
SSJprocesa 0:591a9df7836c 405 { PWM=0.42;}
SSJprocesa 0:591a9df7836c 406 if (Bkupbuffer[74]=='3')
SSJprocesa 0:591a9df7836c 407 { PWM=0.43;}
SSJprocesa 0:591a9df7836c 408 if (Bkupbuffer[74]=='4')
SSJprocesa 0:591a9df7836c 409 { PWM=0.44;}
SSJprocesa 0:591a9df7836c 410 if (Bkupbuffer[74]=='5')
SSJprocesa 0:591a9df7836c 411 { PWM=0.45;}
SSJprocesa 0:591a9df7836c 412 if (Bkupbuffer[74]=='6')
SSJprocesa 0:591a9df7836c 413 { PWM=0.46;}
SSJprocesa 0:591a9df7836c 414 if (Bkupbuffer[74]=='7')
SSJprocesa 0:591a9df7836c 415 {PWM=0.47;}
SSJprocesa 0:591a9df7836c 416 if (Bkupbuffer[74]=='8')
SSJprocesa 0:591a9df7836c 417 { PWM=0.48;}
SSJprocesa 0:591a9df7836c 418 if (Bkupbuffer[74]=='9')
SSJprocesa 0:591a9df7836c 419 {
SSJprocesa 0:591a9df7836c 420 PWM=0.49;
SSJprocesa 0:591a9df7836c 421 }
SSJprocesa 0:591a9df7836c 422 pc.printf("Voltaje leido del duty cycle = \n\r");
SSJprocesa 0:591a9df7836c 423 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
SSJprocesa 0:591a9df7836c 424
SSJprocesa 0:591a9df7836c 425 }
SSJprocesa 0:591a9df7836c 426 if (Bkupbuffer[72]=='B' && Bkupbuffer[73]=='3' ) // verifica si esta entre 50-19
SSJprocesa 0:591a9df7836c 427 {
SSJprocesa 0:591a9df7836c 428 ////////aux[1]=5; // acomoda el dato para configurar el pwm
SSJprocesa 0:591a9df7836c 429 Bkupbuffer[74]=Bkupbuffer[74];
SSJprocesa 0:591a9df7836c 430 PWM.period(0.010); // set PWM period to 10 ms
SSJprocesa 0:591a9df7836c 431 if ( Bkupbuffer[74]=='0')
SSJprocesa 0:591a9df7836c 432 { PWM=0.50;}
SSJprocesa 0:591a9df7836c 433 if (Bkupbuffer[74]=='1')
SSJprocesa 0:591a9df7836c 434 { PWM=0.51;}
SSJprocesa 0:591a9df7836c 435 if (Bkupbuffer[74]=='2')
SSJprocesa 0:591a9df7836c 436 { PWM=0.52;}
SSJprocesa 0:591a9df7836c 437 if (Bkupbuffer[74]=='3')
SSJprocesa 0:591a9df7836c 438 { PWM=0.53;}
SSJprocesa 0:591a9df7836c 439 if (Bkupbuffer[74]=='4')
SSJprocesa 0:591a9df7836c 440 { PWM=0.54;}
SSJprocesa 0:591a9df7836c 441 if (Bkupbuffer[74]=='5')
SSJprocesa 0:591a9df7836c 442 { PWM=0.55;}
SSJprocesa 0:591a9df7836c 443 if (Bkupbuffer[74]=='6')
SSJprocesa 0:591a9df7836c 444 { PWM=0.56;}
SSJprocesa 0:591a9df7836c 445 if (Bkupbuffer[74]=='7')
SSJprocesa 0:591a9df7836c 446 {PWM=0.57;}
SSJprocesa 0:591a9df7836c 447 if (Bkupbuffer[74]=='8')
SSJprocesa 0:591a9df7836c 448 { PWM=0.58;}
SSJprocesa 0:591a9df7836c 449 if (Bkupbuffer[74]=='9')
SSJprocesa 0:591a9df7836c 450 {
SSJprocesa 0:591a9df7836c 451 PWM=0.59;
SSJprocesa 0:591a9df7836c 452 }
SSJprocesa 0:591a9df7836c 453 pc.printf("Voltaje leido del duty cycle = \n\r");
SSJprocesa 0:591a9df7836c 454 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
SSJprocesa 0:591a9df7836c 455
SSJprocesa 0:591a9df7836c 456 }
SSJprocesa 0:591a9df7836c 457
SSJprocesa 0:591a9df7836c 458 if (Bkupbuffer[72]=='D' && Bkupbuffer[73]=='3' ) // verifica si esta entre 60-19
SSJprocesa 0:591a9df7836c 459 {
SSJprocesa 0:591a9df7836c 460 ////////aux[1]=6; // acomoda el dato para configurar el pwm
SSJprocesa 0:591a9df7836c 461 Bkupbuffer[74]=Bkupbuffer[74];
SSJprocesa 0:591a9df7836c 462 PWM.period(0.010); // set PWM period to 10 ms
SSJprocesa 0:591a9df7836c 463 if ( Bkupbuffer[74]=='0')
SSJprocesa 0:591a9df7836c 464 { PWM=0.60;}
SSJprocesa 0:591a9df7836c 465 if (Bkupbuffer[74]=='1')
SSJprocesa 0:591a9df7836c 466 { PWM=0.61;}
SSJprocesa 0:591a9df7836c 467 if (Bkupbuffer[74]=='2')
SSJprocesa 0:591a9df7836c 468 { PWM=0.62;}
SSJprocesa 0:591a9df7836c 469 if (Bkupbuffer[74]=='3')
SSJprocesa 0:591a9df7836c 470 { PWM=0.63;}
SSJprocesa 0:591a9df7836c 471 if (Bkupbuffer[74]=='4')
SSJprocesa 0:591a9df7836c 472 { PWM=0.64;}
SSJprocesa 0:591a9df7836c 473 if (Bkupbuffer[74]=='5')
SSJprocesa 0:591a9df7836c 474 { PWM=0.65;}
SSJprocesa 0:591a9df7836c 475 if (Bkupbuffer[74]=='6')
SSJprocesa 0:591a9df7836c 476 { PWM=0.66;}
SSJprocesa 0:591a9df7836c 477 if (Bkupbuffer[74]=='7')
SSJprocesa 0:591a9df7836c 478 {PWM=0.67;}
SSJprocesa 0:591a9df7836c 479 if (Bkupbuffer[74]=='8')
SSJprocesa 0:591a9df7836c 480 { PWM=0.68;}
SSJprocesa 0:591a9df7836c 481 if (Bkupbuffer[74]=='9')
SSJprocesa 0:591a9df7836c 482 {
SSJprocesa 0:591a9df7836c 483 PWM=0.69;
SSJprocesa 0:591a9df7836c 484 }
SSJprocesa 0:591a9df7836c 485 pc.printf("Voltaje leido del duty cycle = \n\r");
SSJprocesa 0:591a9df7836c 486 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
SSJprocesa 0:591a9df7836c 487
SSJprocesa 0:591a9df7836c 488 }
SSJprocesa 0:591a9df7836c 489 if (Bkupbuffer[72]=='F' && Bkupbuffer[73]=='3' ) // verifica si esta entre 70-19
SSJprocesa 0:591a9df7836c 490 {
SSJprocesa 0:591a9df7836c 491 ////////aux[1]=7; // acomoda el dato para configurar el pwm
SSJprocesa 0:591a9df7836c 492 Bkupbuffer[74]=Bkupbuffer[74];
SSJprocesa 0:591a9df7836c 493 PWM.period(0.010); // set PWM period to 10 ms
SSJprocesa 0:591a9df7836c 494 if ( Bkupbuffer[74]=='0')
SSJprocesa 0:591a9df7836c 495 { PWM=0.70;}
SSJprocesa 0:591a9df7836c 496 if (Bkupbuffer[74]=='1')
SSJprocesa 0:591a9df7836c 497 { PWM=0.71;}
SSJprocesa 0:591a9df7836c 498 if (Bkupbuffer[74]=='2')
SSJprocesa 0:591a9df7836c 499 { PWM=0.72;}
SSJprocesa 0:591a9df7836c 500 if (Bkupbuffer[74]=='3')
SSJprocesa 0:591a9df7836c 501 { PWM=0.73;}
SSJprocesa 0:591a9df7836c 502 if (Bkupbuffer[74]=='4')
SSJprocesa 0:591a9df7836c 503 { PWM=0.74;}
SSJprocesa 0:591a9df7836c 504 if (Bkupbuffer[74]=='5')
SSJprocesa 0:591a9df7836c 505 { PWM=0.75;}
SSJprocesa 0:591a9df7836c 506 if (Bkupbuffer[74]=='6')
SSJprocesa 0:591a9df7836c 507 { PWM=0.76;}
SSJprocesa 0:591a9df7836c 508 if (Bkupbuffer[74]=='7')
SSJprocesa 0:591a9df7836c 509 {PWM=0.77;}
SSJprocesa 0:591a9df7836c 510 if (Bkupbuffer[74]=='8')
SSJprocesa 0:591a9df7836c 511 { PWM=0.78;}
SSJprocesa 0:591a9df7836c 512 if (Bkupbuffer[74]=='9')
SSJprocesa 0:591a9df7836c 513 { PWM=0.79;}
SSJprocesa 0:591a9df7836c 514 pc.printf("Voltaje leido del duty cycle = \n\r");
SSJprocesa 0:591a9df7836c 515 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
SSJprocesa 0:591a9df7836c 516
SSJprocesa 0:591a9df7836c 517 }
SSJprocesa 0:591a9df7836c 518 if (Bkupbuffer[72]=='1' && Bkupbuffer[73]=='3' && Bkupbuffer[75]=='7' ) // En este la trama pdu cambia a verificacion de 3 de los datos
SSJprocesa 0:591a9df7836c 519 {
SSJprocesa 0:591a9df7836c 520 ////////aux[1]=8; // acomoda el dato para configurar el pwm
SSJprocesa 0:591a9df7836c 521 Bkupbuffer[74]=Bkupbuffer[74];
SSJprocesa 0:591a9df7836c 522 PWM.period(0.010); // set PWM period to 10 ms
SSJprocesa 0:591a9df7836c 523 if ( Bkupbuffer[74]=='0')
SSJprocesa 0:591a9df7836c 524 { PWM=0.80;}
SSJprocesa 0:591a9df7836c 525 if (Bkupbuffer[74]=='1')
SSJprocesa 0:591a9df7836c 526 { PWM=0.81;}
SSJprocesa 0:591a9df7836c 527 if (Bkupbuffer[74]=='2')
SSJprocesa 0:591a9df7836c 528 { PWM=0.82;}
SSJprocesa 0:591a9df7836c 529 if (Bkupbuffer[74]=='3')
SSJprocesa 0:591a9df7836c 530 { PWM=0.83;}
SSJprocesa 0:591a9df7836c 531 if (Bkupbuffer[74]=='4')
SSJprocesa 0:591a9df7836c 532 { PWM=0.84;}
SSJprocesa 0:591a9df7836c 533 if (Bkupbuffer[74]=='5')
SSJprocesa 0:591a9df7836c 534 { PWM=0.85;}
SSJprocesa 0:591a9df7836c 535 if (Bkupbuffer[74]=='6')
SSJprocesa 0:591a9df7836c 536 { PWM=0.86;}
SSJprocesa 0:591a9df7836c 537 if (Bkupbuffer[74]=='7')
SSJprocesa 0:591a9df7836c 538 {PWM=0.87;}
SSJprocesa 0:591a9df7836c 539 if (Bkupbuffer[74]=='8')
SSJprocesa 0:591a9df7836c 540 { PWM=0.88;}
SSJprocesa 0:591a9df7836c 541 if (Bkupbuffer[74]=='9')
SSJprocesa 0:591a9df7836c 542 { PWM=0.89;}
SSJprocesa 0:591a9df7836c 543 pc.printf("Voltaje leido del duty cycle = \n\r");
SSJprocesa 0:591a9df7836c 544 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
SSJprocesa 0:591a9df7836c 545
SSJprocesa 0:591a9df7836c 546 }
SSJprocesa 0:591a9df7836c 547 if (Bkupbuffer[72]=='3' && Bkupbuffer[73]=='3' && Bkupbuffer[75]=='7' ) // En este la trama pdu cambia a verificacion de 3 de los datos
SSJprocesa 0:591a9df7836c 548 {
SSJprocesa 0:591a9df7836c 549 ////////aux[1]=9; // acomoda el dato para configurar el pwm
SSJprocesa 0:591a9df7836c 550 Bkupbuffer[74]=Bkupbuffer[74];
SSJprocesa 0:591a9df7836c 551 PWM.period(0.010); // set PWM period to 10 ms
SSJprocesa 0:591a9df7836c 552 if ( Bkupbuffer[74]=='0')
SSJprocesa 0:591a9df7836c 553 { PWM=0.90;}
SSJprocesa 0:591a9df7836c 554 if (Bkupbuffer[74]=='1')
SSJprocesa 0:591a9df7836c 555 { PWM=0.91;}
SSJprocesa 0:591a9df7836c 556 if (Bkupbuffer[74]=='2')
SSJprocesa 0:591a9df7836c 557 { PWM=0.92;}
SSJprocesa 0:591a9df7836c 558 if (Bkupbuffer[74]=='3')
SSJprocesa 0:591a9df7836c 559 { PWM=0.93;}
SSJprocesa 0:591a9df7836c 560 if (Bkupbuffer[74]=='4')
SSJprocesa 0:591a9df7836c 561 { PWM=0.94;}
SSJprocesa 0:591a9df7836c 562 if (Bkupbuffer[74]=='5')
SSJprocesa 0:591a9df7836c 563 { PWM=0.95;}
SSJprocesa 0:591a9df7836c 564 if (Bkupbuffer[74]=='6')
SSJprocesa 0:591a9df7836c 565 { PWM=0.96;}
SSJprocesa 0:591a9df7836c 566 if (Bkupbuffer[74]=='7')
SSJprocesa 0:591a9df7836c 567 {PWM=0.97;}
SSJprocesa 0:591a9df7836c 568 if (Bkupbuffer[74]=='8')
SSJprocesa 0:591a9df7836c 569 { PWM=0.98;}
SSJprocesa 0:591a9df7836c 570 if (Bkupbuffer[74]=='9')
SSJprocesa 0:591a9df7836c 571 { PWM=0.99;
SSJprocesa 0:591a9df7836c 572 }
SSJprocesa 0:591a9df7836c 573 pc.printf("Voltaje leido del duty cycle = \n\r");
SSJprocesa 0:591a9df7836c 574 pc.printf(" \n \r",Vin.read());//imprime el valor del voltaje leido en la entrada analogica
SSJprocesa 0:591a9df7836c 575
SSJprocesa 0:591a9df7836c 576 }
SSJprocesa 0:591a9df7836c 577
SSJprocesa 0:591a9df7836c 578 { // se cierra en
SSJprocesa 0:591a9df7836c 579 num = Vin*10; //agrando el numero de cero a mil
SSJprocesa 0:591a9df7836c 580 int jj=0;
SSJprocesa 0:591a9df7836c 581 pc.printf("\n spp %d",num);
SSJprocesa 0:591a9df7836c 582 while(num>0)
SSJprocesa 0:591a9df7836c 583 {// se cierra 594
SSJprocesa 0:591a9df7836c 584 aux[jj]=(num%10)+48;//se toma la parte entera de la longitud y se pasa a ASCII y guarda en el vector coorden
SSJprocesa 0:591a9df7836c 585 num=num/10;
SSJprocesa 0:591a9df7836c 586 if(num<1){// se cierra en 591
SSJprocesa 0:591a9df7836c 587 break;
SSJprocesa 0:591a9df7836c 588 }// cierra 589
SSJprocesa 0:591a9df7836c 589 pc.printf("\n %c",aux[jj]);
SSJprocesa 0:591a9df7836c 590 jj++;
SSJprocesa 0:591a9df7836c 591 } // cierra 586
SSJprocesa 0:591a9df7836c 592 if(num==0){// se cierra en 595
SSJprocesa 0:591a9df7836c 593 aux[jj]=48;
SSJprocesa 0:591a9df7836c 594 }// cierra en 595
SSJprocesa 0:591a9df7836c 595 pc.printf("\n sss %c",aux);
SSJprocesa 0:591a9df7836c 596 int z;
SSJprocesa 0:591a9df7836c 597 z=strlen(VOL);//hace z = al tamaño de la variable ENCA
SSJprocesa 0:591a9df7836c 598 for(i=j;i>=0;i--)
SSJprocesa 0:591a9df7836c 599 {//se cierra con 602
SSJprocesa 0:591a9df7836c 600 VOL[z]=aux[i];//guarda las coordenadas en un vector auxiliar ENCA en orden
SSJprocesa 0:591a9df7836c 601 z++;
SSJprocesa 0:591a9df7836c 602 }// cierra 602
SSJprocesa 0:591a9df7836c 603
SSJprocesa 0:591a9df7836c 604 buffer[68]=' ';
SSJprocesa 0:591a9df7836c 605 Bkupbuffer[68]=' ';
SSJprocesa 0:591a9df7836c 606 for(st=68;st<=77;st++)
SSJprocesa 0:591a9df7836c 607 {
SSJprocesa 0:591a9df7836c 608 Bkupbuffer[st]=' ';//limpia el espacio del buffer para evitar ingresar de nuevo, si no ha llegado otro mensaje con la contraseña
SSJprocesa 0:591a9df7836c 609 }
SSJprocesa 0:591a9df7836c 610
SSJprocesa 0:591a9df7836c 611
SSJprocesa 0:591a9df7836c 612 //-------------------------------------------------------------------
SSJprocesa 0:591a9df7836c 613 LENIN1=strlen(VOL);//toma el tamaño del vector ENCA
SSJprocesa 0:591a9df7836c 614 for (i=0;i < LENIN1;i++)//algoritmo para pasar de septetos a octetos
SSJprocesa 0:591a9df7836c 615 { // se cierra en 614
SSJprocesa 0:591a9df7836c 616 DS[i]=VOL[i+C]>>K | VOL[i+C+1]<<(7-K);
SSJprocesa 0:591a9df7836c 617 if (DS[i]==0x00) {LENOUT=i; goto salir;}//cuando
SSJprocesa 0:591a9df7836c 618 K++;
SSJprocesa 0:591a9df7836c 619 if (K==7) {K=0;C++;} // se chequea que ya se acabaron los bits en un ciclo de conversion.
SSJprocesa 0:591a9df7836c 620 } // cierra 609
SSJprocesa 0:591a9df7836c 621
SSJprocesa 0:591a9df7836c 622
SSJprocesa 0:591a9df7836c 623 } // este cierra el ciclo if de comparacion de caracteres de la palabra PWM linea 242
SSJprocesa 0:591a9df7836c 624
SSJprocesa 0:591a9df7836c 625
SSJprocesa 0:591a9df7836c 626 //----------------------------------------------- //
SSJprocesa 0:591a9df7836c 627 }
SSJprocesa 0:591a9df7836c 628
SSJprocesa 0:591a9df7836c 629
SSJprocesa 0:591a9df7836c 630
SSJprocesa 0:591a9df7836c 631 }//while
SSJprocesa 0:591a9df7836c 632 }//main
SSJprocesa 0:591a9df7836c 633 //*****************************************************************************************************************************************
SSJprocesa 0:591a9df7836c 634 //*****************************************************************************************************************************************
SSJprocesa 0:591a9df7836c 635 int readBuffer(char *buffer,int count)//Recepción por comunicación serial con el celular
SSJprocesa 0:591a9df7836c 636 {
SSJprocesa 0:591a9df7836c 637 t.start();
SSJprocesa 0:591a9df7836c 638 while(1)
SSJprocesa 0:591a9df7836c 639 {
SSJprocesa 0:591a9df7836c 640 while (GSM.readable())//si hay algo que leer en la comunicación
SSJprocesa 0:591a9df7836c 641 {
SSJprocesa 0:591a9df7836c 642 char c = GSM.getc();
SSJprocesa 0:591a9df7836c 643 if (c == '\r' || c == '\n') c = '$';//remplaza los espacios y saltos de linea por comodín
SSJprocesa 0:591a9df7836c 644 buffer[i++] = c;//almacena la información en una cadena de caracteres "buffer"
SSJprocesa 0:591a9df7836c 645 if(i > count)break;
SSJprocesa 0:591a9df7836c 646 }
SSJprocesa 0:591a9df7836c 647 if(i > count)break;
SSJprocesa 0:591a9df7836c 648 if(t.read() > 3)
SSJprocesa 0:591a9df7836c 649 {
SSJprocesa 0:591a9df7836c 650 t.stop();
SSJprocesa 0:591a9df7836c 651 t.reset();
SSJprocesa 0:591a9df7836c 652 break;
SSJprocesa 0:591a9df7836c 653 }
SSJprocesa 0:591a9df7836c 654 }
SSJprocesa 0:591a9df7836c 655 wait(0.5);
SSJprocesa 0:591a9df7836c 656 while(GSM.readable())
SSJprocesa 0:591a9df7836c 657 {
SSJprocesa 0:591a9df7836c 658 char c = GSM.getc();
SSJprocesa 0:591a9df7836c 659 }
SSJprocesa 0:591a9df7836c 660 return 0;
SSJprocesa 0:591a9df7836c 661 }
SSJprocesa 0:591a9df7836c 662 //*****************************************************************************************************************************************
SSJprocesa 0:591a9df7836c 663 //*****************************************************************************************************************************************
SSJprocesa 0:591a9df7836c 664 void enviar(int LENIN1,char *DS,char *numero)
SSJprocesa 0:591a9df7836c 665 {
SSJprocesa 0:591a9df7836c 666 GSM.printf("at+cmgs=%d\r\n",13+LENIN1);//Comando para enviar el mensaje, empieza con la longitud total -1
SSJprocesa 0:591a9df7836c 667 pc.printf("at+cmgs=%d\r\n",13+LENIN1);
SSJprocesa 0:591a9df7836c 668 wait(0.5);
SSJprocesa 0:591a9df7836c 669 GSM.printf("0011000A91");//Envía relleno
SSJprocesa 0:591a9df7836c 670 pc.printf("0011000A91");
SSJprocesa 0:591a9df7836c 671 for(p=0;p<10;p++)//Envía el número del celular trocado
SSJprocesa 0:591a9df7836c 672 {
SSJprocesa 0:591a9df7836c 673 GSM.printf("%c",celular[p]);
SSJprocesa 0:591a9df7836c 674 pc.printf("%c",celular[p]);
SSJprocesa 0:591a9df7836c 675 }
SSJprocesa 0:591a9df7836c 676 GSM.printf("0000AA");//Envía segundo relleno
SSJprocesa 0:591a9df7836c 677 pc.printf("0000AA");
SSJprocesa 0:591a9df7836c 678 if(LENIN1<=15)//Si es menor a 15 le adiciona un 0 al comienzo de la dirección
SSJprocesa 0:591a9df7836c 679 {
SSJprocesa 0:591a9df7836c 680 pc.printf("0");
SSJprocesa 0:591a9df7836c 681 GSM.printf("0");
SSJprocesa 0:591a9df7836c 682 pc.printf("%X",LENIN1);//Envía la longitud del mensaje
SSJprocesa 0:591a9df7836c 683 GSM.printf("%X",LENIN1);
SSJprocesa 0:591a9df7836c 684 }
SSJprocesa 0:591a9df7836c 685 else
SSJprocesa 0:591a9df7836c 686 {
SSJprocesa 0:591a9df7836c 687 pc.printf("%2X",LENIN1);
SSJprocesa 0:591a9df7836c 688 GSM.printf("%2X",LENIN1);
SSJprocesa 0:591a9df7836c 689 }
SSJprocesa 0:591a9df7836c 690 for (p=0;p < LENIN1;p++)//envía el número de caracteres del mensaje
SSJprocesa 0:591a9df7836c 691 {
SSJprocesa 0:591a9df7836c 692 if(DS[p]<=15)//agrega ceros a cada número menos a 15 en el mensaje
SSJprocesa 0:591a9df7836c 693 {
SSJprocesa 0:591a9df7836c 694 pc.printf("0");
SSJprocesa 0:591a9df7836c 695 GSM.printf("0");
SSJprocesa 0:591a9df7836c 696 pc.printf("%X",DS[p]);
SSJprocesa 0:591a9df7836c 697 GSM.printf("%X",DS[p]);
SSJprocesa 0:591a9df7836c 698 }
SSJprocesa 0:591a9df7836c 699 else
SSJprocesa 0:591a9df7836c 700 {
SSJprocesa 0:591a9df7836c 701 pc.printf("%2X",DS[p]&0x000000FF);
SSJprocesa 0:591a9df7836c 702 GSM.printf("%2X",DS[p]&0x000000FF);
SSJprocesa 0:591a9df7836c 703 }
SSJprocesa 0:591a9df7836c 704 }
SSJprocesa 0:591a9df7836c 705 wait(0.5);
SSJprocesa 0:591a9df7836c 706 GSM.putc(0x1A);//culmina el envío del mensaje
SSJprocesa 0:591a9df7836c 707 pc.putc(0x1A);
SSJprocesa 0:591a9df7836c 708 }
SSJprocesa 0:591a9df7836c 709 //*****************************************************************************************************************************************
SSJprocesa 0:591a9df7836c 710 //*****************************************************************************************************************************************
SSJprocesa 0:591a9df7836c 711 void borrar_todo(void)//reinicia todas las varaibles del programa
SSJprocesa 0:591a9df7836c 712 {
SSJprocesa 0:591a9df7836c 713 for(ro=0;ro<=50;ro++)
SSJprocesa 0:591a9df7836c 714 {
SSJprocesa 0:591a9df7836c 715 coorden[ro]='\0';
SSJprocesa 0:591a9df7836c 716 }
SSJprocesa 0:591a9df7836c 717 ro=0;
SSJprocesa 0:591a9df7836c 718 for(ro=0;ro<=100;ro++)
SSJprocesa 0:591a9df7836c 719 {
SSJprocesa 0:591a9df7836c 720 buffer[ro]='\0';
SSJprocesa 0:591a9df7836c 721 Bkupbuffer[ro]='\0';
SSJprocesa 0:591a9df7836c 722 }
SSJprocesa 0:591a9df7836c 723 for(ro=0;ro<=255;ro++)
SSJprocesa 0:591a9df7836c 724 {
SSJprocesa 0:591a9df7836c 725 DS[ro]='\0';
SSJprocesa 0:591a9df7836c 726 }
SSJprocesa 0:591a9df7836c 727 ro=0;
SSJprocesa 0:591a9df7836c 728 for(ro=0;ro<=10;ro++)
SSJprocesa 0:591a9df7836c 729 {
SSJprocesa 0:591a9df7836c 730 celular[ro]='\0';
SSJprocesa 0:591a9df7836c 731 }
SSJprocesa 0:591a9df7836c 732 ro=0;
SSJprocesa 0:591a9df7836c 733 LENIN=0;LENIN1=0;LENOUT=0;
SSJprocesa 0:591a9df7836c 734 longi_entera=0;lati_entera=0;longi_decimal=0;lati_decimal=0;
SSJprocesa 0:591a9df7836c 735 i=0;count=0;bandera=0;gh=0;negativo=0;K=0;C=0;p=0;j=0;z=0;ro=0;sol=0;st=0;
SSJprocesa 0:591a9df7836c 736 ledr=0;
SSJprocesa 0:591a9df7836c 737 }
SSJprocesa 0:591a9df7836c 738 //*****************************************************************************************************************************************
SSJprocesa 0:591a9df7836c 739 //*****************************************************************************************************************************************
SSJprocesa 0:591a9df7836c 740 void config(void)//setear la configuración en el celular
SSJprocesa 0:591a9df7836c 741 {
SSJprocesa 0:591a9df7836c 742 GSM.printf("AT\r\n");
SSJprocesa 0:591a9df7836c 743 pc.printf("AT\r\n");
SSJprocesa 0:591a9df7836c 744 wait(0.5);
SSJprocesa 0:591a9df7836c 745 GSM.printf("AT+CNMI=1,1\r\n");
SSJprocesa 0:591a9df7836c 746 pc.printf("AT+CNMI=1,1\r\n");
SSJprocesa 0:591a9df7836c 747 wait(0.5);
SSJprocesa 0:591a9df7836c 748 GSM.printf("AT+CMGF=0\r\n");
SSJprocesa 0:591a9df7836c 749 pc.printf("AT+CMGF=0\r\n");
SSJprocesa 0:591a9df7836c 750 wait(0.5);
SSJprocesa 0:591a9df7836c 751 GSM.printf("ATE\r\n");//eco
SSJprocesa 0:591a9df7836c 752 pc.printf("ATE\r\n");
SSJprocesa 0:591a9df7836c 753 wait(0.5);
SSJprocesa 0:591a9df7836c 754 GSM.printf("CBST=0,0,1\r\n");
SSJprocesa 0:591a9df7836c 755 pc.printf("CBST=0,0,1\r\n");
SSJprocesa 0:591a9df7836c 756 wait(0.5);
SSJprocesa 0:591a9df7836c 757 aa=0;
SSJprocesa 0:591a9df7836c 758
SSJprocesa 0:591a9df7836c 759 }