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

Files at this revision

API Documentation at this revision

Comitter:
SSJprocesa
Date:
Tue Nov 29 22:30:48 2016 +0000
Commit message:
Mensajes de configuraci?n PWM y GPS con ubicaci?n satelital

Changed in this revision

GPS.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GPS.lib	Tue Nov 29 22:30:48 2016 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/users/SSJprocesa/code/GPS/#26b920d162f9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Nov 29 22:30:48 2016 +0000
@@ -0,0 +1,759 @@
+#include "mbed.h"
+#include "string.h"
+#include "math.h"
+#include "GPS.h"
+//---Configuraciones---
+Timer t;
+Serial pc(USBTX,USBRX); //Configura puerto UART de la 
+Serial GSM(PTE22, PTE23);//Configura la entrada serial del celular
+DigitalOut ledr(PTE29);//Led indicador
+DigitalOut myled(LED1);
+DigitalIn chan(PTC3);//Pulsador para iniciar la configuración del celular
+GPS gps(PTE0,PTE1);//configuración de los pines de comunicación con el GPS
+PwmOut PWM(PTA12);// salida pwm
+AnalogIn Vin(PTB2); // entrada para leer el pwm
+//---Subrutinas---
+int readBuffer(char *buffer,int count);//Subrutina para leer el buffer
+void enviar(int LENIN1,char *DS,char *numero);//subrutina para enviar mensaje
+void borrar_todo(void);//subrutina para reiniciar las variables
+void config(void);//configuración del celular
+//---Variables para paquetes---
+char buffer[100],Bkupbuffer[100];//buffer's de almacenación de mensajes
+char celular[10];
+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
+char DS[255];
+int LENIN=0,LENIN1=0,LENOUT=0;//Tamaño de los datos de la función de conversión de entrada y salida
+//---Variables para coordenadas---
+char coorden[50]={NULL}, aux[50]={NULL};
+int aa=1, num=0;
+int longi_entera=0,lati_entera=0,longi_decimal=0,lati_decimal=0;
+//---Variables como contadores---
+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;
+//*****************************************************************************************************************************************
+//*****************************************************************************************************************************************
+//es recomendable iniciar siempre oprimiendo el boton de configuración.
+int main(void)
+{ // a.
+inicio: 
+ledr=1;
+borrar_todo();//Ejecuta la rutina que reinicia todas las variables del programaledr=1;
+GSM.baud(9600);//configura los baudios de la comunicación en 9600
+GSM.format(8,Serial::None,1); //configura el formato de los datos de la UART
+wait(1);
+pc.printf("conectado al pc \r\n ");//indicador de conexión
+GSM.printf("AT+CMGD=1\r\n");//Borrar los mensajes del celular
+    while(1) 
+    {//a.1
+ //________________________________________________________________________________________________________________________________________
+        if(aa==1)//si se preciona, se procede a cofigurar el celular con comandos AT
+        {//a.1.1 se cierra en linea 53
+        config();
+        aa=0;
+        myled=1;
+        }//ac.1.1 cierra linea 53,   
+ //________________________________________________________________________________________________________________________________________
+        if (GSM.readable()) //esperar llegada de mensaje del celular
+        { // a.1.2 se cierra en linea 71
+        readBuffer(buffer,100);//guardar el mensaje en el buffer
+        i=0;
+        pc.printf(buffer);//imprimir el mensaje
+            if(buffer[14]=='1'||buffer[6]=='R'){bandera++;}
+            if(bandera==2)//compara si ya llegó el mensaje al celular y hay que borrarlo
+            {//a.1.2.1 se cierra en linea 62
+                for(gh=0;gh<=99;gh++)//guardamos el mensaje almacenado en el buffer en una variable auxiliar
+                {    //a.1.2.1.1 se cieerra en lina 66
+                Bkupbuffer[gh]=buffer[gh];
+                }// ac1.2.1.1 cierra linea 64
+            pc.printf("\r\n%c\r\n %c\r\n %c\r\n %c\r\n",Bkupbuffer[68],Bkupbuffer[69],Bkupbuffer[70],Bkupbuffer[71]);
+            wait(0.5);
+            GSM.printf("AT+CMGD=1\r\n");//borrar mensaje recibido
+            bandera=0;
+            } // cierra linea 62
+        } // cierra lina 56
+ //________________________________________________________________________________________________________________________________________
+        if((buffer[10]=='S')&& (buffer[11]=='M'))//compara si el mensaje es un mensaje de texto que llegó al celular
+        { // se cierra en linea 83
+        pc.printf("\r\n Llego mensaje\r\n ");     
+        buffer[10]=' ';//limpia los espacios del Buffer
+        buffer[11]=' ';
+        GSM.printf("AT+CMGR=%c\r\n",buffer[14]);//solicitar mesaje al celular
+        //pc.printf("AT+CMGR=%c\r\n",buffer[14]);
+        buffer[14]=' ';
+        i=0;
+        } // cierra linea 75
+ //________________________________________________________________________________________________________________________________________
+        if(Bkupbuffer[68]=='4'&& Bkupbuffer[69]=='7'&&Bkupbuffer[70]=='E'&& Bkupbuffer[71]=='8'&& Bkupbuffer[72]=='1'&& Bkupbuffer[73]=='4')//recibió ELE (Extincion Level Event)
+        {
+            buffer[68]=' ';
+            Bkupbuffer[68]=' ';
+            for(st=68;st<=73;st++)    
+            {// se cierra en linea 92
+            Bkupbuffer[st]=' ';//limpia el espacio del buffer para evitar ingresar de nuevo, si no ha llegado otro mensaje con la contraseña
+            }// cierra linea 90
+         pc.printf(" comparacion de contrasena ok \r\n");
+        pc.printf("Adquiriendo coordenadas del GPS...\r\n");//Adquiriendo coordenadas del GPS...
+            if(gps.sample())//Si las coordenadas se obtienen correctamente:
+            {
+                        pc.printf("coordenadas recibidas ");
+                        for(ro=30;ro<=255;ro++)
+                        { // se cierra en 101
+                        ENCA[ro]='\0';
+                        } // cierra 99
+                        ro=0;
+                     
+            longi_entera=(int)gps.longitude;//Adquiere la parte entera de la longitud del GPS
+            pc.printf("d %f",longi_entera);
+            lati_entera=(int)gps.latitude;//Adquiere la parte entera de la latitud del GPS
+            longi_decimal=abs((gps.longitude-(int)gps.longitude)*1000000);//Adquiere el valor absoluto de la longitud del GPS
+            lati_decimal=abs((gps.latitude-(int)gps.latitude)*1000000);//Adquiere el valor absoluto de la longitud del GPS
+            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
+                while(longi_decimal>0)
+                {//se cierra en 116
+                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
+                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
+                pc.printf("%c",coorden[j]);
+                j++;
+                }// cierra 111
+            coorden[j]='.';//Se adiciona el punto, para la parte decimal
+            pc.printf("%c",coorden[j]);//se muestra en el terminal la posición j de la longitud
+            j++;
+                if(longi_entera<0)//si la longitud es menor a cero se multiplica por -1
+                {// se cierra en 121
+                negativo=1;
+                longi_entera=longi_entera*-1;
+                }//cierra 121
+                while(longi_entera>0)
+                {// se cierra en 131
+                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
+                longi_entera=longi_entera/10;
+                pc.printf("%c",coorden[j]);
+                j++;
+                }// cierra 126
+                if(negativo==1)//si negativo es 1 al vector de caracteres se le adiciona un '-'
+                {// se cierra en 137
+                coorden[j]='-';
+                pc.printf("%c",coorden[j]);
+                j++;
+                }// cierra 133
+            negativo=0;//reinicia la variable para hacer lo mismo con la longitud
+            coorden[j]=',';
+            pc.printf("%c",coorden[j]);
+            j++;
+                while(lati_decimal>0)
+                {// se cierra en 148
+                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
+                lati_decimal=lati_decimal/10;
+                pc.printf("%c",coorden[j]);
+                j++;
+                }//cierra 143
+            coorden[j]='.';//adiciona el punto al vector para indicar la parte decimal
+            pc.printf("%c",coorden[j]);
+            j++;
+                if(lati_entera<0)
+                {// se cierrra en 156
+                negativo=1;
+                lati_entera=lati_entera*-1;
+                }// cierra
+                while(lati_entera>0)
+                {
+                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
+                lati_entera=lati_entera/10;
+                pc.printf("%c",coorden[j]);
+                j++;
+                }
+                if(negativo==1)
+                {
+                coorden[j]='-';
+                pc.printf("%c",coorden[j]);
+                j++;
+                }
+            pc.printf("\r\n");
+            j--;
+            z=strlen(ENCA);//hace z = al tamaño de la variable ENCA
+                for(i=j;i>=0;i--)
+                {
+                ENCA[z]=coorden[i];//guarda las coordenadas en un vector auxiliar ENCA en orden
+                z++;
+                }
+            pc.printf(ENCA);
+            pc.printf("\r\n");
+            LENIN1=strlen(ENCA);//toma el tamaño del vector ENCA
+                for (i=0;i < LENIN1;i++)//algoritmo para pasar de septetos a octetos
+                {
+                DS[i]=ENCA[i+C]>>K | ENCA[i+C+1]<<(7-K);
+                    if (DS[i]==0x00) {LENOUT=i; goto salir;}//cuando 
+                K++;
+                    if (K==7) {K=0;C++;} // se chequea que ya se acabaron los bits en un ciclo de conversion.
+                }
+//--------------------------------------------------------------
+salir:          for(i=38;i<48;i++)//Se extrae el número del celular 
+                {
+                celular[i-38]=Bkupbuffer[i];//toma el número del celular trocado en las posiciones del 38 al 48 almacenadas en el buffer
+                }//de respaldo
+                wait(0.5);
+            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
+            wait(14);
+            goto inicio;
+            }//if GPS
+                else
+                { pc.printf(" CONTRASENA INVALIDA  \r\n");
+                    for(i=38;i<48;i++)//Se extrae el número del celular 
+                    {
+                    celular[i-38]=Bkupbuffer[i];//toma el número del celular trocado en las posiciones del 38 al 48 almacenadas en el buffer
+                    }//de respaldo
+                wait(0.5);  
+                GSM.printf("at+cmgs=%d\r\n",37);//inicio de envío de mensaje
+                pc.printf("enviando mensaje\r\n");
+                pc.printf("at+cmgs=%d\r\n",37);
+                wait(0.5);
+                GSM.printf("0011000A91"); 
+                pc.printf("0011000A91"); 
+                    for(p=0;p<10;p++)
+                    {
+                    GSM.printf("%c",celular[p]);
+                    pc.printf("%c",celular[p]);
+                    }
+                GSM.printf("0000AA1B45B9FC2D6781D26E7AD94D2F83DAE139881E9693CB2E970B");//Relleno + Número de octetos + mensaje
+                pc.printf("0000AA1B45B9FC2D6781D26E7AD94D2F83DAE139881E9693CB2E970B");//Error, intente mas tarde...
+                wait(0.5);
+                GSM.putc(0x1A);//fin de envío de mensaje                
+                    for(ro=0;ro<=100;ro++)//borrar el buffer y el respaldo para habilitar una nueva recepción
+                    {
+                    buffer[ro]='\0';
+                    Bkupbuffer[ro]='\0';
+                    }
+                ro=0; 
+                wait(0.5);
+                }          
+        } 
+        // LECTURA DE LA PALABRA DE PWM seguida del duty cicle en % ejemplo PWM43 esto configura la salida del pwm en un 43%           
+           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
+        {  
+        pc.printf("Comprobacion de palabra clave para el pwm ok \n\r");
+              if (Bkupbuffer[72]=='1' &&  Bkupbuffer[73]=='3' )     // Verifica si el duty cicle del pwm esta entre 0-9, 
+                        { 
+                      // //////////aux[1]==0; // acomoda el dato para configurar el pwm
+                       Bkupbuffer[74]=Bkupbuffer[74];
+                       PWM.period(0.010); // set PWM period to 10 ms
+                                              if ( Bkupbuffer[74]=='0') 
+                                              { 
+                                              PWM=0.0;
+                                              }
+                                               if (Bkupbuffer[74]=='1')
+                                              {
+                                                   PWM=0.01;
+                                                   }
+                                               if (Bkupbuffer[74]=='2')
+                                              {
+                                                   PWM=0.02;
+                                                   }
+                                               if (Bkupbuffer[74]=='3')
+                                              {
+                                                   PWM=0.03;
+                                                   }
+                                               if (Bkupbuffer[74]=='4')
+                                              {
+                                                   PWM=0.04;
+                                                   }
+                                               if (Bkupbuffer[74]=='5')
+                                              { 
+                                              PWM=0.05;
+                                              }
+                                               if (Bkupbuffer[74]=='6')
+                                              {
+                                                   PWM=0.06;
+                                                   }
+                                               if (Bkupbuffer[74]=='7')
+                                               {
+                                                   PWM=0.07;
+                                                   }
+                                                if (Bkupbuffer[74]=='8')
+                                              { 
+                                              PWM=0.08;
+                                              }
+                                               if (Bkupbuffer[74]=='9')
+                                              {
+                                                   PWM=0.09;
+                                              }                                      
+                       pc.printf("Voltaje leido  del duty cycle = \n\r");
+                       pc.printf(" \n \r",Vin.read());//imprime el valor del  voltaje leido en la entrada analogica
+                            }
+                       
+                                                             
+                       if (Bkupbuffer[72]=='3' &&  Bkupbuffer[73]=='3' ) // verifica si esta entre 10-19
+                      {
+                       ////////aux[1]=1; // acomoda el dato para configurar el pwm
+                       Bkupbuffer[74]=Bkupbuffer[74];
+                                 PWM.period(0.010); // set PWM period to 10 ms
+                                              if ( Bkupbuffer[74]=='0') 
+                                              {
+                                                   PWM=0.0;
+                                                   }
+                                               if (Bkupbuffer[74]=='1')
+                                              { 
+                                              PWM=0.11;
+                                              }
+                                               if (Bkupbuffer[74]=='2')
+                                              { PWM=0.12;}
+                                               if (Bkupbuffer[74]=='3')
+                                              { 
+                                              PWM=0.13;
+                                              }
+                                               if (Bkupbuffer[74]=='4')
+                                              { 
+                                              PWM=0.14;
+                                              }
+                                               if (Bkupbuffer[74]=='5')
+                                              { 
+                                              PWM=0.15;
+                                              }
+                                               if (Bkupbuffer[74]=='6')
+                                              { 
+                                              PWM=0.16;
+                                              }
+                                               if (Bkupbuffer[74]=='7')
+                                               {
+                                                   PWM=0.17;
+                                                   }
+                                                if (Bkupbuffer[74]=='8')
+                                              {
+                                                   PWM=0.18;
+                                                   }
+                                               if (Bkupbuffer[74]=='9')
+                                              { 
+                                              PWM=0.19;
+                                              }                                      
+                                 pc.printf("Voltaje leido  del duty cycle = \n\r");
+                                 pc.printf(" \n \r",Vin.read());//imprime el valor del  voltaje leido en la entrada analogica
+                            
+                                       }
+                                           
+                        if (Bkupbuffer[72]=='5' &&  Bkupbuffer[73]=='3' ) // verifica si esta entre 20-19
+                      {
+                       ////////aux[1]='2'; // acomoda el dato para configurar el pwm
+                       Bkupbuffer[74]=Bkupbuffer[74];
+                       PWM.period(0.010); // set PWM period to 10 ms
+                                              if ( Bkupbuffer[74]=='0') 
+                                              { PWM=0.20;}
+                                               if (Bkupbuffer[74]=='1')
+                                              { PWM=0.21;}
+                                               if (Bkupbuffer[74]=='2')
+                                              { PWM=0.22;}
+                                               if (Bkupbuffer[74]=='3')
+                                              { PWM=0.23;}
+                                               if (Bkupbuffer[74]=='4')
+                                              { PWM=0.24;}
+                                               if (Bkupbuffer[74]=='5')
+                                              { PWM=0.25;}
+                                               if (Bkupbuffer[74]=='6')
+                                              { PWM=0.26;}
+                                               if (Bkupbuffer[74]=='7')
+                                               {PWM=0.27;}
+                                                if (Bkupbuffer[74]=='8')
+                                              { PWM=0.28;}
+                                               if (Bkupbuffer[74]=='9')
+                                              {
+                                                   PWM=0.29;
+                                                   }   
+                       pc.printf("Voltaje leido  del duty cycle = \n\r");
+                       pc.printf(" \n \r",Vin.read());//imprime el valor del  voltaje leido en la entrada analogica                                   
+                       
+                                         }
+                       if (Bkupbuffer[72]=='7' &&  Bkupbuffer[73]=='3' ) // verifica si esta entre 30-39
+                      {
+                       ////////////////////aux[1]=3; // acomoda el dato para configurar el pwm
+                       Bkupbuffer[74]=Bkupbuffer[74];
+                       PWM.period(0.010); // set PWM period to 10 ms
+                                              if ( Bkupbuffer[74]=='0') 
+                                              { PWM=0.30;}
+                                               if (Bkupbuffer[74]=='1')
+                                              { PWM=0.31;}
+                                               if (Bkupbuffer[74]=='2')
+                                              { PWM=0.32;}
+                                               if (Bkupbuffer[74]=='3')
+                                              { PWM=0.33;}
+                                               if (Bkupbuffer[74]=='4')
+                                              { PWM=0.34;}
+                                               if (Bkupbuffer[74]=='5')
+                                              { PWM=0.35;
+                                              pc.printf("duty cycle = 35% \n\r");
+                                              }
+                                               if (Bkupbuffer[74]=='6')
+                                              { PWM=0.36;}
+                                               if (Bkupbuffer[74]=='7')
+                                               {PWM=0.37;}
+                                                if (Bkupbuffer[74]=='8')
+                                              { PWM=0.38;}
+                                               if (Bkupbuffer[74]=='9')
+                                              { 
+                                              PWM=0.39;
+                                              }   
+                       pc.printf("Voltaje leido  del duty cycle = \n\r");
+                       pc.printf(" \n \r",Vin.read());//imprime el valor del  voltaje leido en la entrada analogica                                   
+                       
+                                         }
+                      if (Bkupbuffer[72]=='9' &&  Bkupbuffer[73]=='3' ) // verifica si esta entre 40-19
+                      {
+                       ////////aux[1]=4; // acomoda el dato para configurar el pwm
+                       Bkupbuffer[74]=Bkupbuffer[74];
+                       PWM.period(0.010); // set PWM period to 10 ms
+                                              if ( Bkupbuffer[74]=='0') 
+                                              { PWM=0.40;}
+                                               if (Bkupbuffer[74]=='1')
+                                              { PWM=0.41;}
+                                               if (Bkupbuffer[74]=='2')
+                                              { PWM=0.42;}
+                                               if (Bkupbuffer[74]=='3')
+                                              { PWM=0.43;}
+                                               if (Bkupbuffer[74]=='4')
+                                              { PWM=0.44;}
+                                               if (Bkupbuffer[74]=='5')
+                                              { PWM=0.45;}
+                                               if (Bkupbuffer[74]=='6')
+                                              { PWM=0.46;}
+                                               if (Bkupbuffer[74]=='7')
+                                               {PWM=0.47;}
+                                                if (Bkupbuffer[74]=='8')
+                                              { PWM=0.48;}
+                                               if (Bkupbuffer[74]=='9')
+                                              {
+                                                PWM=0.49;
+                                                }    
+                                               pc.printf("Voltaje leido  del duty cycle = \n\r");
+                       pc.printf(" \n \r",Vin.read());//imprime el valor del  voltaje leido en la entrada analogica                                  
+                       
+                                         }                     
+                      if (Bkupbuffer[72]=='B' &&  Bkupbuffer[73]=='3' ) // verifica si esta entre 50-19
+                      {
+                       ////////aux[1]=5; // acomoda el dato para configurar el pwm
+                       Bkupbuffer[74]=Bkupbuffer[74];
+                       PWM.period(0.010); // set PWM period to 10 ms
+                                              if ( Bkupbuffer[74]=='0') 
+                                              { PWM=0.50;}
+                                               if (Bkupbuffer[74]=='1')
+                                              { PWM=0.51;}
+                                               if (Bkupbuffer[74]=='2')
+                                              { PWM=0.52;}
+                                               if (Bkupbuffer[74]=='3')
+                                              { PWM=0.53;}
+                                               if (Bkupbuffer[74]=='4')
+                                              { PWM=0.54;}
+                                               if (Bkupbuffer[74]=='5')
+                                              { PWM=0.55;}
+                                               if (Bkupbuffer[74]=='6')
+                                              { PWM=0.56;}
+                                               if (Bkupbuffer[74]=='7')
+                                               {PWM=0.57;}
+                                                if (Bkupbuffer[74]=='8')
+                                              { PWM=0.58;}
+                                               if (Bkupbuffer[74]=='9')
+                                              {
+                                                PWM=0.59;
+                                                }    
+                                               pc.printf("Voltaje leido  del duty cycle = \n\r");
+                       pc.printf(" \n \r",Vin.read());//imprime el valor del  voltaje leido en la entrada analogica                                  
+                       
+                                         }                 
+                                                 
+                      if (Bkupbuffer[72]=='D' &&  Bkupbuffer[73]=='3' ) // verifica si esta entre 60-19
+                      {
+                       ////////aux[1]=6; // acomoda el dato para configurar el pwm
+                       Bkupbuffer[74]=Bkupbuffer[74];
+                       PWM.period(0.010); // set PWM period to 10 ms
+                                              if ( Bkupbuffer[74]=='0') 
+                                              { PWM=0.60;}
+                                               if (Bkupbuffer[74]=='1')
+                                              { PWM=0.61;}
+                                               if (Bkupbuffer[74]=='2')
+                                              { PWM=0.62;}
+                                               if (Bkupbuffer[74]=='3')
+                                              { PWM=0.63;}
+                                               if (Bkupbuffer[74]=='4')
+                                              { PWM=0.64;}
+                                               if (Bkupbuffer[74]=='5')
+                                              { PWM=0.65;}
+                                               if (Bkupbuffer[74]=='6')
+                                              { PWM=0.66;}
+                                               if (Bkupbuffer[74]=='7')
+                                               {PWM=0.67;}
+                                                if (Bkupbuffer[74]=='8')
+                                              { PWM=0.68;}
+                                               if (Bkupbuffer[74]=='9')
+                                              {
+                                                PWM=0.69;
+                                                }    
+                                               pc.printf("Voltaje leido  del duty cycle = \n\r");
+                       pc.printf(" \n \r",Vin.read());//imprime el valor del  voltaje leido en la entrada analogica                                  
+                       
+                                         }   
+                      if (Bkupbuffer[72]=='F' &&  Bkupbuffer[73]=='3' ) // verifica si esta entre 70-19
+                      {
+                       ////////aux[1]=7; // acomoda el dato para configurar el pwm
+                       Bkupbuffer[74]=Bkupbuffer[74];
+                       PWM.period(0.010); // set PWM period to 10 ms
+                                              if ( Bkupbuffer[74]=='0') 
+                                              { PWM=0.70;}
+                                               if (Bkupbuffer[74]=='1')
+                                              { PWM=0.71;}
+                                               if (Bkupbuffer[74]=='2')
+                                              { PWM=0.72;}
+                                               if (Bkupbuffer[74]=='3')
+                                              { PWM=0.73;}
+                                               if (Bkupbuffer[74]=='4')
+                                              { PWM=0.74;}
+                                               if (Bkupbuffer[74]=='5')
+                                              { PWM=0.75;}
+                                               if (Bkupbuffer[74]=='6')
+                                              { PWM=0.76;}
+                                               if (Bkupbuffer[74]=='7')
+                                               {PWM=0.77;}
+                                                if (Bkupbuffer[74]=='8')
+                                              { PWM=0.78;}
+                                               if (Bkupbuffer[74]=='9')
+                                              { PWM=0.79;} 
+                                               pc.printf("Voltaje leido  del duty cycle = \n\r");
+                       pc.printf(" \n \r",Vin.read());//imprime el valor del  voltaje leido en la entrada analogica                                     
+                       
+                                         }                    
+                 if (Bkupbuffer[72]=='1' &&  Bkupbuffer[73]=='3' && Bkupbuffer[75]=='7' ) // En este la trama pdu cambia a verificacion de 3 de los datos
+                      {
+                       ////////aux[1]=8; // acomoda el dato para configurar el pwm
+                       Bkupbuffer[74]=Bkupbuffer[74];
+                       PWM.period(0.010); // set PWM period to 10 ms
+                                              if ( Bkupbuffer[74]=='0') 
+                                              { PWM=0.80;}
+                                               if (Bkupbuffer[74]=='1')
+                                              { PWM=0.81;}
+                                               if (Bkupbuffer[74]=='2')
+                                              { PWM=0.82;}
+                                               if (Bkupbuffer[74]=='3')
+                                              { PWM=0.83;}
+                                               if (Bkupbuffer[74]=='4')
+                                              { PWM=0.84;}
+                                               if (Bkupbuffer[74]=='5')
+                                              { PWM=0.85;}
+                                               if (Bkupbuffer[74]=='6')
+                                              { PWM=0.86;}
+                                               if (Bkupbuffer[74]=='7')
+                                               {PWM=0.87;}
+                                                if (Bkupbuffer[74]=='8')
+                                              { PWM=0.88;}
+                                               if  (Bkupbuffer[74]=='9')
+                                              { PWM=0.89;}     
+                                               pc.printf("Voltaje leido  del duty cycle = \n\r");
+                       pc.printf(" \n \r",Vin.read());//imprime el valor del  voltaje leido en la entrada analogica                                 
+                       
+                                         }                                  
+                     if (Bkupbuffer[72]=='3' &&  Bkupbuffer[73]=='3' && Bkupbuffer[75]=='7' ) // En este la trama pdu cambia a verificacion de 3 de los datos
+                      {
+                       ////////aux[1]=9; // acomoda el dato para configurar el pwm
+                       Bkupbuffer[74]=Bkupbuffer[74];
+                       PWM.period(0.010); // set PWM period to 10 ms
+                                              if ( Bkupbuffer[74]=='0') 
+                                              { PWM=0.90;}
+                                               if (Bkupbuffer[74]=='1')
+                                              { PWM=0.91;}
+                                               if (Bkupbuffer[74]=='2')
+                                              { PWM=0.92;}
+                                               if (Bkupbuffer[74]=='3')
+                                              { PWM=0.93;}
+                                               if (Bkupbuffer[74]=='4')
+                                              { PWM=0.94;}
+                                               if (Bkupbuffer[74]=='5')
+                                              { PWM=0.95;}
+                                               if (Bkupbuffer[74]=='6')
+                                              { PWM=0.96;}
+                                               if (Bkupbuffer[74]=='7')
+                                               {PWM=0.97;}
+                                                if (Bkupbuffer[74]=='8')
+                                              { PWM=0.98;}
+                                               if (Bkupbuffer[74]=='9')
+                                              { PWM=0.99;
+                                              }         
+                                               pc.printf("Voltaje leido  del duty cycle = \n\r");
+                       pc.printf(" \n \r",Vin.read());//imprime el valor del  voltaje leido en la entrada analogica                             
+                       
+                                         }   
+                                         
+                                          { // se cierra en 
+                num = Vin*10;      //agrando el numero de cero a mil
+                int jj=0;
+                pc.printf("\n spp %d",num);
+                while(num>0)
+                {// se cierra 594
+                aux[jj]=(num%10)+48;//se toma la parte entera de la longitud y se pasa a ASCII y guarda en el vector coorden
+                num=num/10;
+                if(num<1){// se cierra en 591
+                    break;
+                    }// cierra 589
+                pc.printf("\n %c",aux[jj]);
+                jj++;
+                } // cierra 586
+                if(num==0){// se cierra en 595
+                    aux[jj]=48;
+                    }//  cierra en 595
+                pc.printf("\n sss %c",aux);
+                int z;
+                z=strlen(VOL);//hace z = al tamaño de la variable ENCA
+                for(i=j;i>=0;i--)
+                {//se cierra con 602
+                VOL[z]=aux[i];//guarda las coordenadas en un vector auxiliar ENCA en orden
+                z++;
+                }// cierra 602
+                                                  
+             buffer[68]=' ';
+            Bkupbuffer[68]=' ';
+            for(st=68;st<=77;st++)    
+            {
+            Bkupbuffer[st]=' ';//limpia el espacio del buffer para evitar ingresar de nuevo, si no ha llegado otro mensaje con la contraseña
+            }
+ 
+        
+     //-------------------------------------------------------------------           
+                LENIN1=strlen(VOL);//toma el tamaño del vector ENCA
+                for (i=0;i < LENIN1;i++)//algoritmo para pasar de septetos a octetos
+                {  // se cierra en 614
+                DS[i]=VOL[i+C]>>K | VOL[i+C+1]<<(7-K);
+                    if (DS[i]==0x00) {LENOUT=i; goto salir;}//cuando 
+                K++;
+                    if (K==7) {K=0;C++;} // se chequea que ya se acabaron los bits en un ciclo de conversion.
+                }   // cierra 609                        
+                       
+                       
+        } // este cierra el ciclo if de comparacion de caracteres de la palabra PWM linea 242
+        
+                  
+      //-----------------------------------------------                          //
+}            
+          
+        
+                                                    
+    }//while
+}//main
+//*****************************************************************************************************************************************
+//*****************************************************************************************************************************************
+int readBuffer(char *buffer,int count)//Recepción por comunicación serial con el celular
+{
+t.start(); 
+    while(1) 
+    {
+        while (GSM.readable())//si hay algo que leer en la comunicación
+        {
+        char c = GSM.getc();
+        if (c == '\r' || c == '\n') c = '$';//remplaza los espacios y saltos de linea por comodín
+        buffer[i++] = c;//almacena la información en una cadena de caracteres "buffer"
+        if(i > count)break;
+        }
+        if(i > count)break;
+        if(t.read() > 3) 
+        {
+        t.stop();
+        t.reset();
+        break;
+        }
+    }
+wait(0.5);
+    while(GSM.readable())
+    {  
+    char c = GSM.getc();
+    }
+return 0;
+}
+//*****************************************************************************************************************************************
+//*****************************************************************************************************************************************
+void enviar(int LENIN1,char *DS,char *numero)
+{
+GSM.printf("at+cmgs=%d\r\n",13+LENIN1);//Comando para enviar el mensaje, empieza con la longitud total -1
+pc.printf("at+cmgs=%d\r\n",13+LENIN1);
+wait(0.5);
+GSM.printf("0011000A91");//Envía relleno
+pc.printf("0011000A91"); 
+    for(p=0;p<10;p++)//Envía el número del celular trocado
+    {
+    GSM.printf("%c",celular[p]);
+    pc.printf("%c",celular[p]);
+    } 
+GSM.printf("0000AA");//Envía segundo relleno
+pc.printf("0000AA"); 
+    if(LENIN1<=15)//Si es menor a 15 le adiciona un 0 al comienzo de la dirección
+    {
+    pc.printf("0");
+    GSM.printf("0");
+    pc.printf("%X",LENIN1);//Envía la longitud del mensaje
+    GSM.printf("%X",LENIN1);
+    }
+    else
+    {    
+    pc.printf("%2X",LENIN1);
+    GSM.printf("%2X",LENIN1);
+    }
+    for (p=0;p < LENIN1;p++)//envía el número de caracteres del mensaje
+    {
+        if(DS[p]<=15)//agrega ceros a cada número menos a 15 en el mensaje
+        {
+        pc.printf("0");
+        GSM.printf("0");
+        pc.printf("%X",DS[p]);
+        GSM.printf("%X",DS[p]);
+        }
+        else
+        {    
+        pc.printf("%2X",DS[p]&0x000000FF);
+        GSM.printf("%2X",DS[p]&0x000000FF);
+        }
+    }
+wait(0.5);
+GSM.putc(0x1A);//culmina el envío del mensaje
+pc.putc(0x1A);          
+}
+//*****************************************************************************************************************************************
+//*****************************************************************************************************************************************
+void borrar_todo(void)//reinicia todas las varaibles del programa
+{
+    for(ro=0;ro<=50;ro++)
+    {
+    coorden[ro]='\0';
+    }
+    ro=0;
+    for(ro=0;ro<=100;ro++)
+    {
+    buffer[ro]='\0';
+    Bkupbuffer[ro]='\0';
+    }
+    for(ro=0;ro<=255;ro++)
+    {
+    DS[ro]='\0';
+    }
+    ro=0;
+    for(ro=0;ro<=10;ro++)
+    {
+    celular[ro]='\0';
+    }
+ro=0;
+LENIN=0;LENIN1=0;LENOUT=0;
+longi_entera=0;lati_entera=0;longi_decimal=0;lati_decimal=0;
+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;
+ledr=0;
+}
+//*****************************************************************************************************************************************
+//*****************************************************************************************************************************************
+void config(void)//setear la configuración en el celular
+{
+        GSM.printf("AT\r\n");
+        pc.printf("AT\r\n");
+        wait(0.5);
+        GSM.printf("AT+CNMI=1,1\r\n");
+        pc.printf("AT+CNMI=1,1\r\n");
+        wait(0.5);
+        GSM.printf("AT+CMGF=0\r\n");
+        pc.printf("AT+CMGF=0\r\n");
+        wait(0.5);
+        GSM.printf("ATE\r\n");//eco
+        pc.printf("ATE\r\n");
+        wait(0.5);
+        GSM.printf("CBST=0,0,1\r\n");
+        pc.printf("CBST=0,0,1\r\n");
+        wait(0.5);
+        aa=0;
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue Nov 29 22:30:48 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/6c34061e7c34
\ No newline at end of file