Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SCP1000 GPS mbed
main.cpp
00001 #include "mbed.h" 00002 #include "GPS.h" 00003 #include "SCP1000.h" 00004 00005 /* 00006 $PMTK251,115200*1F 00007 $PMTK220,100*2F 00008 RMC,VTG,GGA 00009 $PMTK314,0,5,5,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*2A 00010 */ 00011 #define GPSTX p9 00012 #define GPSRX p10 00013 #define PCBAUD 115200 00014 #define GPSBAUD 115200 00015 00016 #define DEGREES 176 00017 // 176 is degree untranslated 00018 // 248 is degree translated 00019 00020 Serial pc(USBTX, USBRX); 00021 GPS gps(GPSTX, GPSRX); 00022 SCP1000 scp1000(p11,p12,p13,p14); 00023 //SDFileSystem sd(p5,p6,p7,p8,"sd"); 00024 00025 char rmc[GPS_BUFFER_LEN]; 00026 char gga[GPS_BUFFER_LEN]; 00027 char vtg[GPS_BUFFER_LEN]; 00028 00029 bool validgps; 00030 bool validtime; 00031 short int sats; 00032 double latitude; 00033 double longitude; 00034 float altitude; 00035 float pressure; 00036 float velocity; 00037 float track; 00038 00039 DigitalOut led1(LED1); 00040 Timeout t1; 00041 void t1out(void) { led1 = 0; } 00042 void blip1(void) { led1 = 1; t1.attach(&t1out, 0.01); } 00043 00044 DigitalOut led2(LED2); 00045 Timeout t2; 00046 void t2out(void) { led2 = 0; } 00047 void blip2(void) { led2 = 1; t2.attach(&t2out, 0.01); } 00048 00049 DigitalOut led3(LED3); 00050 Timeout t3; 00051 void t3out(void) { led3 = 0; } 00052 void blip3(void) { led3 = 1; t3.attach(&t3out, 0.01); } 00053 00054 DigitalOut led4(LED4); 00055 Timeout t4; 00056 void t4out(void) { led4 = 0; } 00057 void blip4(void) { led4 = 1; t4.attach(&t4out, 0.01); } 00058 00059 GPS_Geodetic g; 00060 GPS_VTG v; 00061 00062 void pos(void) { 00063 blip4(); 00064 gps.geodetic(&g); 00065 gps.vtg(&v); 00066 latitude = g.lat; 00067 longitude = g.lon; 00068 altitude = g.alt; 00069 velocity = v._velocity_knots; 00070 track = v._track_true; 00071 sats = gps.numOfSats(); 00072 validgps = false; 00073 validtime = false; 00074 validgps = gps.getGPSquality(); 00075 validtime = gps.isTimeValid(); 00076 if (!validgps) { latitude = 0.000000; longitude = 0.000000; velocity = 0.000000; track = 0.000000; } 00077 pc.printf("GPS: %i(%i), TIME: %i\r\nLAT: %f\r\nLON: %f\r\nALT: %5.1lf ft\r\nPRES: %d Pa\r\nTEMP: %3.1lf %cC\r\nSPD: %3.1lf kts\r\nTRK: %3.1lf %cT\r\n", validgps, sats, validtime, latitude, longitude, altitude, scp1000.readPressure(), scp1000.readTemperature(), DEGREES, velocity, track, DEGREES); // 1.0m = 3.2808399 ft - 1.0km = 3280.8399 ft 00078 time_t seconds = time(NULL); 00079 pc.printf("%s\r\n", ctime(&seconds)); 00080 } 00081 00082 int main() { 00083 00084 pc.baud(PCBAUD); 00085 gps.baud(GPSBAUD); 00086 gps.format(8, GPS::None, 1); 00087 00088 //gps.setRmc(rmc); 00089 //gps.setGga(gga); 00090 //gps.setVtg(vtg); 00091 00092 //gps.attach_rmc(&rmc); 00093 //gps.attach_vtg(&vtg); 00094 //gps.attach_gga(&gga); 00095 00096 struct tm t; 00097 GPS_Time *q2 = gps.timeNow(); 00098 00099 while (q2->year == 2000) { 00100 wait(0.1); 00101 GPS_Time *q2 = gps.timeNow(); 00102 t.tm_sec = q2->second; // 0-59 00103 t.tm_min = q2->minute; // 0-59 00104 t.tm_hour = q2->hour; // 0-23 00105 t.tm_mday = q2->day; // 1-31 00106 t.tm_mon = (q2->month - 1); // 0-11 00107 t.tm_year = (q2->year - 1900); // year since 1900 00108 time_t timestamp = mktime(&t); 00109 set_time(timestamp); 00110 if (q2->year != 2000) break; 00111 pc.printf("."); 00112 } 00113 delete(q2); 00114 pc.printf("\r\n"); 00115 00116 gps.attach_gga(&pos); 00117 gps.attach_rmc(&pos); 00118 }
Generated on Wed Jul 13 2022 03:19:56 by
1.7.2