GPS y GSM con envío de cadena de google maps.
Dependencies: GPSGSM TextLCD mbed
Fork of TAREA_4_GPS_GSM by
main.cpp@3:238bcdf52c8f, 2017-06-09 (annotated)
- 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?
User | Revision | Line number | New 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 | } |