pour ismet only
main.cpp@0:d7ffee41722a, 2017-01-18 (annotated)
- Committer:
- fadi_lad
- Date:
- Wed Jan 18 16:47:23 2017 +0000
- Revision:
- 0:d7ffee41722a
GPS hello ismet
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fadi_lad | 0:d7ffee41722a | 1 | |
fadi_lad | 0:d7ffee41722a | 2 | #include "mbed.h" |
fadi_lad | 0:d7ffee41722a | 3 | #include "GPS.h" |
fadi_lad | 0:d7ffee41722a | 4 | |
fadi_lad | 0:d7ffee41722a | 5 | Serial pc(D8, PA_10); // tx, rx |
fadi_lad | 0:d7ffee41722a | 6 | DigitalOut led1(LED1); |
fadi_lad | 0:d7ffee41722a | 7 | |
fadi_lad | 0:d7ffee41722a | 8 | // SET THIS. |
fadi_lad | 0:d7ffee41722a | 9 | // Create an instance of the GPS object. You will need to |
fadi_lad | 0:d7ffee41722a | 10 | // set p25 to whichever Serial RX pin you have connected |
fadi_lad | 0:d7ffee41722a | 11 | // your GPS module to. |
fadi_lad | 0:d7ffee41722a | 12 | GPS gps(NC, D0); |
fadi_lad | 0:d7ffee41722a | 13 | |
fadi_lad | 0:d7ffee41722a | 14 | char rmc[GPS_BUFFER_LEN]; |
fadi_lad | 0:d7ffee41722a | 15 | char gga[GPS_BUFFER_LEN]; |
fadi_lad | 0:d7ffee41722a | 16 | char vtg[GPS_BUFFER_LEN]; |
fadi_lad | 0:d7ffee41722a | 17 | char ukn[GPS_BUFFER_LEN]; |
fadi_lad | 0:d7ffee41722a | 18 | |
fadi_lad | 0:d7ffee41722a | 19 | // 0.1 second flash of LED2 |
fadi_lad | 0:d7ffee41722a | 20 | DigitalOut led2(LED2); |
fadi_lad | 0:d7ffee41722a | 21 | Timeout t2; |
fadi_lad | 0:d7ffee41722a | 22 | void t2out(void) { led2 = 0; } |
fadi_lad | 0:d7ffee41722a | 23 | void blip2(void) { led2 = 1; t2.attach(&t2out, 0.1); } |
fadi_lad | 0:d7ffee41722a | 24 | |
fadi_lad | 0:d7ffee41722a | 25 | // 0.1 second flash of LED3 |
fadi_lad | 0:d7ffee41722a | 26 | DigitalOut led3(LED3); |
fadi_lad | 0:d7ffee41722a | 27 | Timeout t3; |
fadi_lad | 0:d7ffee41722a | 28 | void t3out(void) { led3 = 0; } |
fadi_lad | 0:d7ffee41722a | 29 | void blip3(void) { led3 = 1; t3.attach(&t3out, 0.1); } |
fadi_lad | 0:d7ffee41722a | 30 | |
fadi_lad | 0:d7ffee41722a | 31 | // 0.1 second flash of LED4 |
fadi_lad | 0:d7ffee41722a | 32 | DigitalOut led4(LED4); |
fadi_lad | 0:d7ffee41722a | 33 | |
fadi_lad | 0:d7ffee41722a | 34 | Timeout t4; |
fadi_lad | 0:d7ffee41722a | 35 | void t4out(void) { led4 = 0; } |
fadi_lad | 0:d7ffee41722a | 36 | void blip4(void) { led4 = 1; t4.attach(&t4out, 0.1); } |
fadi_lad | 0:d7ffee41722a | 37 | |
fadi_lad | 0:d7ffee41722a | 38 | int main() { |
fadi_lad | 0:d7ffee41722a | 39 | GPS_Time q1; |
fadi_lad | 0:d7ffee41722a | 40 | |
fadi_lad | 0:d7ffee41722a | 41 | // SET THIS. |
fadi_lad | 0:d7ffee41722a | 42 | // Ensure you set the baud rate to match your serial |
fadi_lad | 0:d7ffee41722a | 43 | // communications to your PC/Max/Linux host so you |
fadi_lad | 0:d7ffee41722a | 44 | // can read the messages. |
fadi_lad | 0:d7ffee41722a | 45 | pc.baud(PCBAUD); |
fadi_lad | 0:d7ffee41722a | 46 | |
fadi_lad | 0:d7ffee41722a | 47 | // Tell MODGPS "we want copies of the NMEA sentences". When a callback |
fadi_lad | 0:d7ffee41722a | 48 | // is made our buffers will contain a copy of the last received sentence |
fadi_lad | 0:d7ffee41722a | 49 | // before it was processed/destroyed. |
fadi_lad | 0:d7ffee41722a | 50 | gps.setRmc(rmc); |
fadi_lad | 0:d7ffee41722a | 51 | gps.setGga(gga); |
fadi_lad | 0:d7ffee41722a | 52 | gps.setVtg(vtg); |
fadi_lad | 0:d7ffee41722a | 53 | gps.setUkn(ukn); |
fadi_lad | 0:d7ffee41722a | 54 | |
fadi_lad | 0:d7ffee41722a | 55 | // SET THIS. |
fadi_lad | 0:d7ffee41722a | 56 | // Most GPS modules use 9600,8,n,1 so that's what |
fadi_lad | 0:d7ffee41722a | 57 | // we default to here. Ensure your GPS module matches |
fadi_lad | 0:d7ffee41722a | 58 | // this, otherwise set it to match. |
fadi_lad | 0:d7ffee41722a | 59 | gps.baud(GPSBUAD); |
fadi_lad | 0:d7ffee41722a | 60 | gps.format(8, GPS::None, 1); |
fadi_lad | 0:d7ffee41722a | 61 | |
fadi_lad | 0:d7ffee41722a | 62 | // OPTIONAL |
fadi_lad | 0:d7ffee41722a | 63 | // If you GPS has a 1 pulse per second output you can |
fadi_lad | 0:d7ffee41722a | 64 | // connect it to an Mbed pin. Here you specify what pin |
fadi_lad | 0:d7ffee41722a | 65 | // and on what "edge" teh signal is active. If your GPS |
fadi_lad | 0:d7ffee41722a | 66 | // module has a rising edge at the one second point then |
fadi_lad | 0:d7ffee41722a | 67 | // use GPS::ppsRise |
fadi_lad | 0:d7ffee41722a | 68 | #ifdef PPSPIN |
fadi_lad | 0:d7ffee41722a | 69 | gps.ppsAttach(PPSPIN, GPS::ppsFall); |
fadi_lad | 0:d7ffee41722a | 70 | #endif |
fadi_lad | 0:d7ffee41722a | 71 | |
fadi_lad | 0:d7ffee41722a | 72 | // Sample of a callback to a function when the 1PPS activates. |
fadi_lad | 0:d7ffee41722a | 73 | // For this example, we flash LED2 for 0.1 second. |
fadi_lad | 0:d7ffee41722a | 74 | gps.attach_pps(&blip2); |
fadi_lad | 0:d7ffee41722a | 75 | |
fadi_lad | 0:d7ffee41722a | 76 | // Sample of a callback to a function when a NMEA GGA message is recieved. |
fadi_lad | 0:d7ffee41722a | 77 | // For this example, we flash LED2 for 0.1 second. |
fadi_lad | 0:d7ffee41722a | 78 | gps.attach_gga(&blip3); |
fadi_lad | 0:d7ffee41722a | 79 | |
fadi_lad | 0:d7ffee41722a | 80 | // Sample of a callback to a function when a NMEA RMC message is recieved. |
fadi_lad | 0:d7ffee41722a | 81 | // For this example, we flash LED2 for 0.1 second. |
fadi_lad | 0:d7ffee41722a | 82 | gps.attach_rmc(&blip4); |
fadi_lad | 0:d7ffee41722a | 83 | |
fadi_lad | 0:d7ffee41722a | 84 | while(1) { |
fadi_lad | 0:d7ffee41722a | 85 | // Every 3 seconds, flip LED1 and print the basic GPS info. |
fadi_lad | 0:d7ffee41722a | 86 | wait(3); |
fadi_lad | 0:d7ffee41722a | 87 | led1 = 1; |
fadi_lad | 0:d7ffee41722a | 88 | |
fadi_lad | 0:d7ffee41722a | 89 | // Demonstrate how to find out the GPS location co-ords. |
fadi_lad | 0:d7ffee41722a | 90 | pc.printf("Method 1. Lat = %.4f ", gps.latitude()); |
fadi_lad | 0:d7ffee41722a | 91 | pc.printf("Lon = %.4f ", gps.longitude()); |
fadi_lad | 0:d7ffee41722a | 92 | pc.printf("Alt = %.4f ", gps.altitude()); |
fadi_lad | 0:d7ffee41722a | 93 | |
fadi_lad | 0:d7ffee41722a | 94 | // Gran a snapshot of the current time. |
fadi_lad | 0:d7ffee41722a | 95 | gps.timeNow(&q1); |
fadi_lad | 0:d7ffee41722a | 96 | pc.printf("%02d:%02d:%02d %02d/%02d/%04d\r\n", |
fadi_lad | 0:d7ffee41722a | 97 | q1.hour, q1.minute, q1.second, q1.day, q1.month, q1.year); |
fadi_lad | 0:d7ffee41722a | 98 | |
fadi_lad | 0:d7ffee41722a | 99 | // Alternative method that does the same thing. |
fadi_lad | 0:d7ffee41722a | 100 | pc.printf("Method 2. Lat = %.4f ", gps.latitude()); |
fadi_lad | 0:d7ffee41722a | 101 | pc.printf("Lon = %.4f ", gps.longitude()); |
fadi_lad | 0:d7ffee41722a | 102 | pc.printf("Alt = %.4f ", gps.altitude()); |
fadi_lad | 0:d7ffee41722a | 103 | |
fadi_lad | 0:d7ffee41722a | 104 | GPS_Time *q2 = gps.timeNow(); |
fadi_lad | 0:d7ffee41722a | 105 | pc.printf("%02d:%02d:%02d %02d/%02d/%04d\r\n\n", |
fadi_lad | 0:d7ffee41722a | 106 | q2->hour, q2->minute, q2->second, q2->day, q2->month, q2->year); |
fadi_lad | 0:d7ffee41722a | 107 | delete(q2); |
fadi_lad | 0:d7ffee41722a | 108 | led1 = 0; |
fadi_lad | 0:d7ffee41722a | 109 | } |
fadi_lad | 0:d7ffee41722a | 110 | } |
fadi_lad | 0:d7ffee41722a | 111 |