GPS y GSM con envío de cadena de google maps.

Dependencies:   GPSGSM TextLCD mbed

Fork of TAREA_4_GPS_GSM by joshema 216

Committer:
NicolasV
Date:
Fri Jun 09 21:09:43 2017 +0000
Revision:
3:238bcdf52c8f
Parent:
2:ea6275d1222f
Con env?o de cadena de google maps

Who changed what in which revision?

UserRevisionLine numberNew contents of line
procesadores_FAC 0:b2a6aa7c0c8c 1 #include "mbed.h"
procesadores_FAC 0:b2a6aa7c0c8c 2 #include "DebouncedIn.h"
procesadores_FAC 0:b2a6aa7c0c8c 3 #include "stdio.h"
procesadores_FAC 0:b2a6aa7c0c8c 4 #include "string.h"
procesadores_FAC 0:b2a6aa7c0c8c 5 #include "GPS.h"
NicolasV 3:238bcdf52c8f 6 #include "TextLCD.h"
joshema216 2:ea6275d1222f 7
AaronGonzalez 1:e2bd083802c0 8 //Salidas digitales
procesadores_FAC 0:b2a6aa7c0c8c 9 Timer t;
NicolasV 3:238bcdf52c8f 10 Timer t2;
procesadores_FAC 0:b2a6aa7c0c8c 11 DigitalOut LedVerde(LED2);
procesadores_FAC 0:b2a6aa7c0c8c 12 DigitalOut LedRojo(LED1);
procesadores_FAC 0:b2a6aa7c0c8c 13 DigitalOut LedAzul(LED3);
procesadores_FAC 0:b2a6aa7c0c8c 14
joshema216 2:ea6275d1222f 15 // Entrada análoga
joshema216 2:ea6275d1222f 16 AnalogIn v(PTB0);
joshema216 2:ea6275d1222f 17 float medi;
joshema216 2:ea6275d1222f 18
NicolasV 3:238bcdf52c8f 19 Serial GSM(PTE0,PTE1);
procesadores_FAC 0:b2a6aa7c0c8c 20 Serial pc(USBTX,USBRX);
NicolasV 3:238bcdf52c8f 21 GPS gps(PTE22, PTE23);
NicolasV 3:238bcdf52c8f 22 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); // rs, e, d4-d7
NicolasV 3:238bcdf52c8f 23 DigitalOut led_alarma(PTA5);
NicolasV 3:238bcdf52c8f 24 DigitalOut led_carro(PTA4);
procesadores_FAC 0:b2a6aa7c0c8c 25
joshema216 2:ea6275d1222f 26 char DE1[255];
joshema216 2:ea6275d1222f 27 char DS1[255];
joshema216 2:ea6275d1222f 28 char DE2[255];
joshema216 2:ea6275d1222f 29 char DS2[255];
procesadores_FAC 0:b2a6aa7c0c8c 30 char buffer[512];
joshema216 2:ea6275d1222f 31 char resp[6];
joshema216 2:ea6275d1222f 32 char tam[2];
procesadores_FAC 0:b2a6aa7c0c8c 33 char mensaje[100];
joshema216 2:ea6275d1222f 34
AaronGonzalez 1:e2bd083802c0 35 //Variables enteras y caracteres
procesadores_FAC 0:b2a6aa7c0c8c 36 int count;
joshema216 2:ea6275d1222f 37 int i, K, LENOUT1, LENIN1, LENOUT2, LENIN2, C;
procesadores_FAC 0:b2a6aa7c0c8c 38 int c=0;
procesadores_FAC 0:b2a6aa7c0c8c 39 char r[]="";
procesadores_FAC 0:b2a6aa7c0c8c 40 char msg[256];
procesadores_FAC 0:b2a6aa7c0c8c 41 char char1;
joshema216 2:ea6275d1222f 42 int ind;
joshema216 2:ea6275d1222f 43 float med;
joshema216 2:ea6275d1222f 44 char outmed[16], outmedn[16];
joshema216 2:ea6275d1222f 45 int ret = 1;
NicolasV 3:238bcdf52c8f 46 char tel[15] = {'0', '3', '3', '4', '4', '7', '6', '2', '6', '1'};
NicolasV 3:238bcdf52c8f 47 bool noM2 = true, noM5 = true, noM3 = true, aviso = false, noOf = true;
NicolasV 3:238bcdf52c8f 48 char mensajeM2[] = "Saliendo por la porteria del M2. Vehiculo apagado.";
NicolasV 3:238bcdf52c8f 49 char mensajeM3[] = "Saliendo por la porteria del M3. Vehiculo apagado.";
NicolasV 3:238bcdf52c8f 50 char mensajeM5[] = "Saliendo por la porteria del M5. Vehiculo apagado.";
NicolasV 3:238bcdf52c8f 51 char mensajeOficina[255];
procesadores_FAC 0:b2a6aa7c0c8c 52 char buf[100];
joshema216 2:ea6275d1222f 53 char relle1[] = "0011000A91";
joshema216 2:ea6275d1222f 54 char relle2[] = "0000AA";
NicolasV 3:238bcdf52c8f 55 float latitud, longitud, frac_long, frac_lat;
procesadores_FAC 0:b2a6aa7c0c8c 56
NicolasV 3:238bcdf52c8f 57 // Usando el GPS se obtuvo las coordenadas de la porteria del bloque M2: 6.274062N, 75.592538W.
NicolasV 3:238bcdf52c8f 58 float distanciaM2(float x, float y) {
NicolasV 3:238bcdf52c8f 59 return sqrt(pow((x - 6.274062f), 2) + pow((y + 75.592538f), 2));
joshema216 2:ea6275d1222f 60 }
NicolasV 3:238bcdf52c8f 61
NicolasV 3:238bcdf52c8f 62 // Usando el GPS se obtuvo las coordenadas de la porteria del bloque M3: 6.274674N, 75.590680W.
NicolasV 3:238bcdf52c8f 63 float distanciaM3(float x, float y) {
NicolasV 3:238bcdf52c8f 64 return sqrt(pow((x - 6.274674f), 2) + pow((y + 75.590680f), 2));
NicolasV 3:238bcdf52c8f 65 }
NicolasV 3:238bcdf52c8f 66
NicolasV 3:238bcdf52c8f 67 // Usando el GPS se obtuvo las coordenadas de la porteria del bloque M5: 6.275458N, 75.591170W.
NicolasV 3:238bcdf52c8f 68 float distanciaM5(float x, float y) {
NicolasV 3:238bcdf52c8f 69 return sqrt(pow((x - 6.275458f), 2) + pow((y + 75.591170f), 2));
NicolasV 3:238bcdf52c8f 70 }
NicolasV 3:238bcdf52c8f 71
NicolasV 3:238bcdf52c8f 72 float distanciaOficina(float x, float y) { // https://www.google.com.co/maps/search/6.275206,-75.592836/
NicolasV 3:238bcdf52c8f 73 return sqrt(pow((x - 6.275206), 2) + pow((y + 75.592836f), 2));
joshema216 2:ea6275d1222f 74 }
procesadores_FAC 0:b2a6aa7c0c8c 75
NicolasV 3:238bcdf52c8f 76 // Funcion para enviar un mensaje de alerta:
NicolasV 3:238bcdf52c8f 77 void alarma(char* msj) {
NicolasV 3:238bcdf52c8f 78 strcpy(DE1,msj);
NicolasV 3:238bcdf52c8f 79 LENIN1 = strlen(DE1);
NicolasV 3:238bcdf52c8f 80 K = 0;
NicolasV 3:238bcdf52c8f 81 C = 0;
NicolasV 3:238bcdf52c8f 82 for (i = 0; i < LENIN1; i++){
NicolasV 3:238bcdf52c8f 83 DS1[i] = DE1[i + C] >> K | DE1[i + C + 1] << (7 - K);
NicolasV 3:238bcdf52c8f 84 if(DS1[i] == 0x00) {LENOUT1 = i;}
NicolasV 3:238bcdf52c8f 85 K++;
NicolasV 3:238bcdf52c8f 86 if (K == 7) {K = 0; C++;} // se chequea que ya se acabaron los bits en un ciclo de conversion.
joshema216 2:ea6275d1222f 87 }
NicolasV 3:238bcdf52c8f 88
NicolasV 3:238bcdf52c8f 89 // Concatenación del mensaje en formato PDU y envío del mismo.
NicolasV 3:238bcdf52c8f 90 ind = 14 + LENOUT1 - 1;
NicolasV 3:238bcdf52c8f 91
NicolasV 3:238bcdf52c8f 92 GSM.printf("AT+CMGS=%d\r\n",ind);
NicolasV 3:238bcdf52c8f 93 pc.printf("AT+CMGS=%d\r\n",ind);
NicolasV 3:238bcdf52c8f 94 pc.printf(relle1);
NicolasV 3:238bcdf52c8f 95 GSM.printf(relle1);
NicolasV 3:238bcdf52c8f 96
NicolasV 3:238bcdf52c8f 97 for (i=0 ;i<=9; i++) {
NicolasV 3:238bcdf52c8f 98 pc.printf("%c",tel[i]);
NicolasV 3:238bcdf52c8f 99 GSM.printf("%c",tel[i]);
NicolasV 3:238bcdf52c8f 100 }
NicolasV 3:238bcdf52c8f 101
NicolasV 3:238bcdf52c8f 102 pc.printf(relle2);
NicolasV 3:238bcdf52c8f 103 GSM.printf(relle2);
NicolasV 3:238bcdf52c8f 104 pc.printf("%2X", LENIN1);
NicolasV 3:238bcdf52c8f 105 GSM.printf("%2X", LENIN1);
NicolasV 3:238bcdf52c8f 106
NicolasV 3:238bcdf52c8f 107 for (i = 0; i < LENOUT1; i++){
NicolasV 3:238bcdf52c8f 108 pc.printf("%02X", DS1[i]&0x000000FF);
NicolasV 3:238bcdf52c8f 109 GSM.printf("%02X", DS1[i]&0x000000FF);
NicolasV 3:238bcdf52c8f 110 }
NicolasV 3:238bcdf52c8f 111 wait(1);
NicolasV 3:238bcdf52c8f 112 GSM.putc((char)0x1A); // Ctrl - Z.
NicolasV 3:238bcdf52c8f 113 GSM.scanf("%s",buf); // Estado del mensaje (Envió o Error).
NicolasV 3:238bcdf52c8f 114 pc.printf(">%s\n",buf);
NicolasV 3:238bcdf52c8f 115 pc.printf("\n");
joshema216 2:ea6275d1222f 116 }
joshema216 2:ea6275d1222f 117
NicolasV 3:238bcdf52c8f 118 // Leer el buffer:
joshema216 2:ea6275d1222f 119 int readBuffer(char *buffer,int count){
NicolasV 3:238bcdf52c8f 120 int i = 0;
NicolasV 3:238bcdf52c8f 121 t.start();
NicolasV 3:238bcdf52c8f 122 while(true) {
procesadores_FAC 0:b2a6aa7c0c8c 123 while (GSM.readable()) {
procesadores_FAC 0:b2a6aa7c0c8c 124 char c = GSM.getc();
procesadores_FAC 0:b2a6aa7c0c8c 125 buffer[i++] = c;
NicolasV 3:238bcdf52c8f 126 if(i > count + 1)break;
procesadores_FAC 0:b2a6aa7c0c8c 127 }
joshema216 2:ea6275d1222f 128 if(i > count)break;
procesadores_FAC 0:b2a6aa7c0c8c 129 if(t.read() > 3) {
procesadores_FAC 0:b2a6aa7c0c8c 130 t.stop();
procesadores_FAC 0:b2a6aa7c0c8c 131 t.reset();
procesadores_FAC 0:b2a6aa7c0c8c 132 break;
procesadores_FAC 0:b2a6aa7c0c8c 133 }
procesadores_FAC 0:b2a6aa7c0c8c 134 }
procesadores_FAC 0:b2a6aa7c0c8c 135 wait(0.5);
NicolasV 3:238bcdf52c8f 136 while(GSM.readable())
joshema216 2:ea6275d1222f 137 char c = GSM.getc();
joshema216 2:ea6275d1222f 138 return 0;
joshema216 2:ea6275d1222f 139 }
joshema216 2:ea6275d1222f 140
joshema216 2:ea6275d1222f 141 void sendCmd(char *cmd){
joshema216 2:ea6275d1222f 142 GSM.puts(cmd);
joshema216 2:ea6275d1222f 143 }
joshema216 2:ea6275d1222f 144
joshema216 2:ea6275d1222f 145 int waitForResp(char *resp, int timeout){
joshema216 2:ea6275d1222f 146 int len = strlen(resp);
NicolasV 3:238bcdf52c8f 147 int sum = 0;
joshema216 2:ea6275d1222f 148 t.start();
joshema216 2:ea6275d1222f 149
NicolasV 3:238bcdf52c8f 150 while(true) {
joshema216 2:ea6275d1222f 151 if(GSM.readable()) {
joshema216 2:ea6275d1222f 152 char c = GSM.getc();
NicolasV 3:238bcdf52c8f 153 sum = (c == resp[sum]) ? sum + 1 : 0;
NicolasV 3:238bcdf52c8f 154 if(sum == len)break;
joshema216 2:ea6275d1222f 155 }
NicolasV 3:238bcdf52c8f 156 if(t.read() > timeout) {
joshema216 2:ea6275d1222f 157 t.stop();
joshema216 2:ea6275d1222f 158 t.reset();
joshema216 2:ea6275d1222f 159 return -1;
joshema216 2:ea6275d1222f 160 }
joshema216 2:ea6275d1222f 161 }
NicolasV 3:238bcdf52c8f 162 t.stop();
NicolasV 3:238bcdf52c8f 163 t.reset();
NicolasV 3:238bcdf52c8f 164 while(GSM.readable()) {
procesadores_FAC 0:b2a6aa7c0c8c 165 char c = GSM.getc();
procesadores_FAC 0:b2a6aa7c0c8c 166 }
procesadores_FAC 0:b2a6aa7c0c8c 167 return 0;
procesadores_FAC 0:b2a6aa7c0c8c 168 }
procesadores_FAC 0:b2a6aa7c0c8c 169
joshema216 2:ea6275d1222f 170 int sendCmdAndWaitForResp(char *cmd, char *resp, int timeout){
joshema216 2:ea6275d1222f 171 sendCmd(cmd);
joshema216 2:ea6275d1222f 172 return waitForResp(resp,timeout);
joshema216 2:ea6275d1222f 173 }
joshema216 2:ea6275d1222f 174
NicolasV 3:238bcdf52c8f 175 int init() {
NicolasV 3:238bcdf52c8f 176 if (0 != sendCmdAndWaitForResp("AT\r\n", "OK", 3))
NicolasV 3:238bcdf52c8f 177 return -1;
NicolasV 3:238bcdf52c8f 178 if (0 != sendCmdAndWaitForResp("AT+CNMI=1,1\r\n", "OK", 3))
joshema216 2:ea6275d1222f 179 return -1;
NicolasV 3:238bcdf52c8f 180 if (0 != sendCmdAndWaitForResp("AT+CMGF=0\r\n", "OK", 3))
NicolasV 3:238bcdf52c8f 181 return -1;
NicolasV 3:238bcdf52c8f 182 if (0 != sendCmdAndWaitForResp("AT+CBST=7,0,1\r\n", "OK", 3))
NicolasV 3:238bcdf52c8f 183 return -1;
NicolasV 3:238bcdf52c8f 184 if (0 != sendCmdAndWaitForResp("ATE\r\n", "OK", 3))
NicolasV 3:238bcdf52c8f 185 return -1;
NicolasV 3:238bcdf52c8f 186 LedVerde=0;
joshema216 2:ea6275d1222f 187 return 0;
joshema216 2:ea6275d1222f 188 }
joshema216 2:ea6275d1222f 189
NicolasV 3:238bcdf52c8f 190 int recibe_ok() {
joshema216 2:ea6275d1222f 191 GSM.printf("AT+CMGS=27\n\r");
joshema216 2:ea6275d1222f 192 pc.printf("AT+CMGS=27\n\r");
joshema216 2:ea6275d1222f 193 wait_ms(100);
joshema216 2:ea6275d1222f 194 GSM.printf("0011000A91%s0000AA10CDB27B1E569741F2F2382D4E93DF",tel);
joshema216 2:ea6275d1222f 195 pc.printf("0011000A91%s0000AA10CDB27B1E569741F2F2382D4E93DF",tel);
joshema216 2:ea6275d1222f 196 wait_ms(100);
joshema216 2:ea6275d1222f 197 GSM.putc((char)0x1A);
joshema216 2:ea6275d1222f 198 return 0;
joshema216 2:ea6275d1222f 199 }
joshema216 2:ea6275d1222f 200
NicolasV 3:238bcdf52c8f 201 int main() {
NicolasV 3:238bcdf52c8f 202
NicolasV 3:238bcdf52c8f 203 t2.start();
NicolasV 3:238bcdf52c8f 204 GSM.baud(9600);
NicolasV 3:238bcdf52c8f 205 GSM.format(8, Serial::None, 1);
NicolasV 3:238bcdf52c8f 206 LedVerde = 1;
joshema216 2:ea6275d1222f 207 LedRojo = 1;
joshema216 2:ea6275d1222f 208 LedAzul = 1;
NicolasV 3:238bcdf52c8f 209 led_carro = 1;
NicolasV 3:238bcdf52c8f 210 led_alarma = 0;
NicolasV 3:238bcdf52c8f 211 aviso = false;
NicolasV 3:238bcdf52c8f 212
NicolasV 3:238bcdf52c8f 213 inicio1:
NicolasV 3:238bcdf52c8f 214
NicolasV 3:238bcdf52c8f 215 // Configurando Modem...
NicolasV 3:238bcdf52c8f 216 ret = init();
NicolasV 3:238bcdf52c8f 217 lcd.locate(0,0);
NicolasV 3:238bcdf52c8f 218 lcd.printf("Configurando\nModem...");
NicolasV 3:238bcdf52c8f 219 wait(2);
NicolasV 3:238bcdf52c8f 220
NicolasV 3:238bcdf52c8f 221 if (ret == 0) {
NicolasV 3:238bcdf52c8f 222 LedRojo = 1;
NicolasV 3:238bcdf52c8f 223 LedVerde = 0; // Apagar LED Verde para confirmar la comunicación con el módem.
NicolasV 3:238bcdf52c8f 224 pc.printf("Hecho!\n");
NicolasV 3:238bcdf52c8f 225 lcd.cls();
NicolasV 3:238bcdf52c8f 226 lcd.locate(0,0);
NicolasV 3:238bcdf52c8f 227 lcd.printf("Hecho!");
NicolasV 3:238bcdf52c8f 228 wait(1);
NicolasV 3:238bcdf52c8f 229 }
NicolasV 3:238bcdf52c8f 230 else {
NicolasV 3:238bcdf52c8f 231 wait(1);
NicolasV 3:238bcdf52c8f 232 goto inicio1;
NicolasV 3:238bcdf52c8f 233 }
procesadores_FAC 0:b2a6aa7c0c8c 234
NicolasV 3:238bcdf52c8f 235 lcd.cls();
NicolasV 3:238bcdf52c8f 236 lcd.locate(0,0);
NicolasV 3:238bcdf52c8f 237 lcd.printf(" Alarma de \n seguridad. ");
NicolasV 3:238bcdf52c8f 238 wait(5);
NicolasV 3:238bcdf52c8f 239
NicolasV 3:238bcdf52c8f 240 while(true) {
NicolasV 3:238bcdf52c8f 241
NicolasV 3:238bcdf52c8f 242 // A continuacion se verifica si esta entrando una llamada.
NicolasV 3:238bcdf52c8f 243 // Si es el caso, se apaga el carro.
NicolasV 3:238bcdf52c8f 244
NicolasV 3:238bcdf52c8f 245 if (GSM.readable()) {
NicolasV 3:238bcdf52c8f 246
NicolasV 3:238bcdf52c8f 247 readBuffer(buffer, 110);
NicolasV 3:238bcdf52c8f 248
NicolasV 3:238bcdf52c8f 249 for(i=0; i < 5; i++)
NicolasV 3:238bcdf52c8f 250 resp[i] = buffer[i];
NicolasV 3:238bcdf52c8f 251
NicolasV 3:238bcdf52c8f 252 pc.printf(resp);
NicolasV 3:238bcdf52c8f 253
NicolasV 3:238bcdf52c8f 254 if (strcmp("\r\nRIN", resp) == 0) {
NicolasV 3:238bcdf52c8f 255 lcd.cls();
NicolasV 3:238bcdf52c8f 256 led_carro = 0;
NicolasV 3:238bcdf52c8f 257 lcd.locate(0,0);
NicolasV 3:238bcdf52c8f 258 lcd.printf("Llamada!!!\nApagando carro..");
NicolasV 3:238bcdf52c8f 259 pc.printf("Llamada!!!\n\r");
NicolasV 3:238bcdf52c8f 260 wait(5);
NicolasV 3:238bcdf52c8f 261 }
joshema216 2:ea6275d1222f 262 }
joshema216 2:ea6275d1222f 263
NicolasV 3:238bcdf52c8f 264 char dir1[32];
NicolasV 3:238bcdf52c8f 265 char dir2[32];
NicolasV 3:238bcdf52c8f 266 char dirc[255];
NicolasV 3:238bcdf52c8f 267
NicolasV 3:238bcdf52c8f 268 // Cada 3 segundos se lee el GPS para actualizar la posicion y enviar mensaje de alerta de ser necesario.
NicolasV 3:238bcdf52c8f 269 if (int(t2.read()) % 3 == 0) {
NicolasV 3:238bcdf52c8f 270 gps.sample();
NicolasV 3:238bcdf52c8f 271 latitud = gps.latitude;
NicolasV 3:238bcdf52c8f 272 longitud = gps.longitude;
NicolasV 3:238bcdf52c8f 273
NicolasV 3:238bcdf52c8f 274 if (distanciaM5(latitud, longitud) <= 1000.00015f && !aviso) {
NicolasV 3:238bcdf52c8f 275 aviso = true;
NicolasV 3:238bcdf52c8f 276 led_alarma = 1;
NicolasV 3:238bcdf52c8f 277 noM5 = false;
NicolasV 3:238bcdf52c8f 278 sprintf(dir1, "%2.6f", latitud);
NicolasV 3:238bcdf52c8f 279 sprintf(dir2, "%2.6f", longitud);
NicolasV 3:238bcdf52c8f 280 strcpy(dirc, "https://www.google.com.co/maps/search/");
NicolasV 3:238bcdf52c8f 281 strcat(dirc, dir1);
NicolasV 3:238bcdf52c8f 282 strcat(dirc, ",");
NicolasV 3:238bcdf52c8f 283 strcat(dirc, dir2);
NicolasV 3:238bcdf52c8f 284 alarma(dirc);
NicolasV 3:238bcdf52c8f 285 lcd.cls();
NicolasV 3:238bcdf52c8f 286 lcd.locate(0,0);
NicolasV 3:238bcdf52c8f 287 lcd.printf("M5: Enviando\nalerta...");
NicolasV 3:238bcdf52c8f 288 }
NicolasV 3:238bcdf52c8f 289 else if (distanciaM5(latitud, longitud) > 0.00015f && aviso)
NicolasV 3:238bcdf52c8f 290 noM5 = true;
NicolasV 3:238bcdf52c8f 291
NicolasV 3:238bcdf52c8f 292 if (distanciaM2(latitud, longitud) <= 0.00015f && !aviso) {
NicolasV 3:238bcdf52c8f 293 aviso = true;
NicolasV 3:238bcdf52c8f 294 led_alarma = 1;
NicolasV 3:238bcdf52c8f 295 noM2 = false;
NicolasV 3:238bcdf52c8f 296 sprintf(dir1, "%2.6f", latitud);
NicolasV 3:238bcdf52c8f 297 sprintf(dir2, "%2.6f", longitud);
NicolasV 3:238bcdf52c8f 298 strcpy(dirc, "https://www.google.com.co/maps/search/");
NicolasV 3:238bcdf52c8f 299 strcat(dirc, dir1);
NicolasV 3:238bcdf52c8f 300 strcat(dirc, ",");
NicolasV 3:238bcdf52c8f 301 strcat(dirc, dir2);
NicolasV 3:238bcdf52c8f 302 alarma(dirc);
NicolasV 3:238bcdf52c8f 303 lcd.cls();
NicolasV 3:238bcdf52c8f 304 lcd.locate(0,0);
NicolasV 3:238bcdf52c8f 305 lcd.printf("M2: Enviando\nalerta...");
NicolasV 3:238bcdf52c8f 306 }
NicolasV 3:238bcdf52c8f 307 else if (distanciaM2(latitud, longitud) > 0.00015f && aviso)
NicolasV 3:238bcdf52c8f 308 noM2 = true;
joshema216 2:ea6275d1222f 309
NicolasV 3:238bcdf52c8f 310 if (distanciaM3(latitud, longitud) <= 0.00015f && !aviso) {
NicolasV 3:238bcdf52c8f 311 aviso = true;
NicolasV 3:238bcdf52c8f 312 led_alarma = 1;
NicolasV 3:238bcdf52c8f 313 noM3 = false;
NicolasV 3:238bcdf52c8f 314 sprintf(dir1, "%2.6f", latitud);
NicolasV 3:238bcdf52c8f 315 sprintf(dir2, "%2.6f", longitud);
NicolasV 3:238bcdf52c8f 316 strcpy(dirc, "https://www.google.com.co/maps/search/");
NicolasV 3:238bcdf52c8f 317 strcat(dirc, dir1);
NicolasV 3:238bcdf52c8f 318 strcat(dirc, ",");
NicolasV 3:238bcdf52c8f 319 strcat(dirc, dir2);
NicolasV 3:238bcdf52c8f 320 alarma(dirc);
NicolasV 3:238bcdf52c8f 321 lcd.cls();
NicolasV 3:238bcdf52c8f 322 lcd.locate(0,0);
NicolasV 3:238bcdf52c8f 323 lcd.printf("M3: Enviando\nalerta...");
NicolasV 3:238bcdf52c8f 324 }
NicolasV 3:238bcdf52c8f 325 else if (distanciaM3(latitud, longitud) > 0.00015f && aviso)
NicolasV 3:238bcdf52c8f 326 noM3 = true;
NicolasV 3:238bcdf52c8f 327
NicolasV 3:238bcdf52c8f 328 if (noM2 && noM5 && noM3 && noOf && !aviso) {
NicolasV 3:238bcdf52c8f 329 led_carro = 1;
NicolasV 3:238bcdf52c8f 330 led_alarma = 0;
NicolasV 3:238bcdf52c8f 331 }
NicolasV 3:238bcdf52c8f 332
NicolasV 3:238bcdf52c8f 333 // Si la distancia a la oficina es pequeña entonces envia la direccion de google Maps!!:
NicolasV 3:238bcdf52c8f 334 if (distanciaOficina(latitud, longitud) <= 0.00015f && !aviso) {
NicolasV 3:238bcdf52c8f 335 led_alarma = 1;
NicolasV 3:238bcdf52c8f 336 aviso = true;
NicolasV 3:238bcdf52c8f 337 noOf = false;
NicolasV 3:238bcdf52c8f 338 sprintf(dir1, "%2.6f", latitud);
NicolasV 3:238bcdf52c8f 339 sprintf(dir2, "%2.6f", longitud);
NicolasV 3:238bcdf52c8f 340 strcpy(dirc, "https://www.google.com.co/maps/search/");
NicolasV 3:238bcdf52c8f 341 strcat(dirc, dir1);
NicolasV 3:238bcdf52c8f 342 strcat(dirc, ",");
NicolasV 3:238bcdf52c8f 343 strcat(dirc, dir2);
NicolasV 3:238bcdf52c8f 344 pc.printf("%s\n", dirc);
NicolasV 3:238bcdf52c8f 345 alarma(dirc);
NicolasV 3:238bcdf52c8f 346 lcd.cls();
NicolasV 3:238bcdf52c8f 347 lcd.locate(0,0);
NicolasV 3:238bcdf52c8f 348 lcd.printf("M3: Enviando\nalerta...");
NicolasV 3:238bcdf52c8f 349 wait(5);
NicolasV 3:238bcdf52c8f 350 }
NicolasV 3:238bcdf52c8f 351 else if (distanciaM3(latitud, longitud) > 0.00015f && aviso)
NicolasV 3:238bcdf52c8f 352 noM3 = true;
NicolasV 3:238bcdf52c8f 353
NicolasV 3:238bcdf52c8f 354 lcd.cls();
NicolasV 3:238bcdf52c8f 355 lcd.locate(0,0);
NicolasV 3:238bcdf52c8f 356 lcd.printf(" Lat: %02.6f\n Lon: %02.6f", latitud, longitud);
NicolasV 3:238bcdf52c8f 357
NicolasV 3:238bcdf52c8f 358 }
NicolasV 3:238bcdf52c8f 359
joshema216 2:ea6275d1222f 360 }
AaronGonzalez 1:e2bd083802c0 361 }