Se usa un celular Siemens A56i para la comunicación por GSM,la aplicación consiste en esperar un mensaje de texto con la frase "Donde estas?","donde estas" o "donde estas?" que es enviada al Siemens desde cualquier otro celular, para así devolverle al remitente un link de Google Maps con las coordenadas de donde se encuentra en ese momento suministradas por un GPS, que en este caso será un computador que las envía a través de un Dongle conectado,usando el programa de SatGen con un .kml cargado de Google Earth o usando el simulador GPS de Proteus (funciona para ambos casos).

Dependencies:   GPS_G mbed

/media/uploads/seccastanova/whatsapp_image_2018-05-29_at_11.03.46_am.jpeg

Committer:
seccastanova
Date:
Tue May 29 16:03:59 2018 +0000
Revision:
0:deee3793c151
Comunicaci?n GSM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
seccastanova 0:deee3793c151 1 #include "DebouncedIn.h"
seccastanova 0:deee3793c151 2 #include "mbed.h"
seccastanova 0:deee3793c151 3
seccastanova 0:deee3793c151 4 /*
seccastanova 0:deee3793c151 5 * Constructor
seccastanova 0:deee3793c151 6 */
seccastanova 0:deee3793c151 7 DebouncedIn::DebouncedIn(PinName in)
seccastanova 0:deee3793c151 8 : _in(in) {
seccastanova 0:deee3793c151 9
seccastanova 0:deee3793c151 10 // reset all the flags and counters
seccastanova 0:deee3793c151 11 _samples = 0;
seccastanova 0:deee3793c151 12 _output = 0;
seccastanova 0:deee3793c151 13 _output_last = 0;
seccastanova 0:deee3793c151 14 _rising_flag = 0;
seccastanova 0:deee3793c151 15 _falling_flag = 0;
seccastanova 0:deee3793c151 16 _state_counter = 0;
seccastanova 0:deee3793c151 17
seccastanova 0:deee3793c151 18 // Attach ticker
seccastanova 0:deee3793c151 19 _ticker.attach(this, &DebouncedIn::_sample, 0.005);
seccastanova 0:deee3793c151 20 }
seccastanova 0:deee3793c151 21
seccastanova 0:deee3793c151 22 void DebouncedIn::_sample() {
seccastanova 0:deee3793c151 23
seccastanova 0:deee3793c151 24 // take a sample
seccastanova 0:deee3793c151 25 _samples = _samples >> 1; // shift left
seccastanova 0:deee3793c151 26
seccastanova 0:deee3793c151 27 if (_in) {
seccastanova 0:deee3793c151 28 _samples |= 0x80;
seccastanova 0:deee3793c151 29 }
seccastanova 0:deee3793c151 30
seccastanova 0:deee3793c151 31 // examine the sample window, look for steady state
seccastanova 0:deee3793c151 32 if (_samples == 0x00) {
seccastanova 0:deee3793c151 33 _output = 0;
seccastanova 0:deee3793c151 34 }
seccastanova 0:deee3793c151 35 else if (_samples == 0xFF) {
seccastanova 0:deee3793c151 36 _output = 1;
seccastanova 0:deee3793c151 37 }
seccastanova 0:deee3793c151 38
seccastanova 0:deee3793c151 39
seccastanova 0:deee3793c151 40 // Rising edge detection
seccastanova 0:deee3793c151 41 if ((_output == 1) && (_output_last == 0)) {
seccastanova 0:deee3793c151 42 _rising_flag++;
seccastanova 0:deee3793c151 43 _state_counter = 0;
seccastanova 0:deee3793c151 44 }
seccastanova 0:deee3793c151 45
seccastanova 0:deee3793c151 46 // Falling edge detection
seccastanova 0:deee3793c151 47 else if ((_output == 0) && (_output_last == 1)) {
seccastanova 0:deee3793c151 48 _falling_flag++;
seccastanova 0:deee3793c151 49 _state_counter = 0;
seccastanova 0:deee3793c151 50 }
seccastanova 0:deee3793c151 51
seccastanova 0:deee3793c151 52 // steady state
seccastanova 0:deee3793c151 53 else {
seccastanova 0:deee3793c151 54 _state_counter++;
seccastanova 0:deee3793c151 55 }
seccastanova 0:deee3793c151 56
seccastanova 0:deee3793c151 57 // update the output
seccastanova 0:deee3793c151 58 _output_last = _output;
seccastanova 0:deee3793c151 59
seccastanova 0:deee3793c151 60 }
seccastanova 0:deee3793c151 61
seccastanova 0:deee3793c151 62
seccastanova 0:deee3793c151 63
seccastanova 0:deee3793c151 64 // return number of rising edges
seccastanova 0:deee3793c151 65 int DebouncedIn::rising(void) {
seccastanova 0:deee3793c151 66 int return_value = _rising_flag;
seccastanova 0:deee3793c151 67 _rising_flag = 0;
seccastanova 0:deee3793c151 68 return(return_value);
seccastanova 0:deee3793c151 69 }
seccastanova 0:deee3793c151 70
seccastanova 0:deee3793c151 71 // return number of falling edges
seccastanova 0:deee3793c151 72 int DebouncedIn::falling(void) {
seccastanova 0:deee3793c151 73 int return_value = _falling_flag;
seccastanova 0:deee3793c151 74 _falling_flag = 0;
seccastanova 0:deee3793c151 75 return(return_value);
seccastanova 0:deee3793c151 76 }
seccastanova 0:deee3793c151 77
seccastanova 0:deee3793c151 78 // return number of ticsk we've bene steady for
seccastanova 0:deee3793c151 79 int DebouncedIn::steady(void) {
seccastanova 0:deee3793c151 80 return(_state_counter);
seccastanova 0:deee3793c151 81 }
seccastanova 0:deee3793c151 82
seccastanova 0:deee3793c151 83 // return the debounced status
seccastanova 0:deee3793c151 84 int DebouncedIn::read(void) {
seccastanova 0:deee3793c151 85 return(_output);
seccastanova 0:deee3793c151 86 }
seccastanova 0:deee3793c151 87
seccastanova 0:deee3793c151 88 // shorthand for read()
seccastanova 0:deee3793c151 89 DebouncedIn::operator int() {
seccastanova 0:deee3793c151 90 return read();
seccastanova 0:deee3793c151 91 }
seccastanova 0:deee3793c151 92
seccastanova 0:deee3793c151 93