Juan David Londono Galeano
/
Celular_GPS_2_PWM_copy
listo
Fork of Celular_GPS_2_PWM by
main.cpp@1:ee813acb61a2, 2017-06-07 (annotated)
- Committer:
- jdlodonog
- Date:
- Wed Jun 07 20:57:50 2017 +0000
- Revision:
- 1:ee813acb61a2
- Parent:
- 0:591a9df7836c
listo
Who changed what in which revision?
User | Revision | Line number | New 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--- |
jdlodonog | 1:ee813acb61a2 | 16 | int readBuffer(char *buffer,int count);//Subrutina para leer el buffer (en este caso no se usa la recepción de mnsajes) |
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. |
jdlodonog | 1:ee813acb61a2 | 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 | } |