gps
Diff: MBed_Adafruit_GPS.cpp
- Revision:
- 1:42f840c832b6
- Parent:
- 0:a23e3099bb0a
- Child:
- 2:90f2232bbdfd
--- a/MBed_Adafruit_GPS.cpp Sat Mar 22 05:00:47 2014 +0000 +++ b/MBed_Adafruit_GPS.cpp Thu Jan 23 18:08:12 2020 +0000 @@ -12,6 +12,8 @@ #include "MBed_Adafruit_GPS.h" +#define M_PI 3.14159265358979323846 + // how long are max NMEA lines to parse? #define MAXLINELENGTH 120 @@ -347,4 +349,72 @@ else { return false; // Returns false if not in standby mode, nothing to wakeup } -} \ No newline at end of file +} + +float Adafruit_GPS::coordToDegDec(float coord) { + float dd, ss, codd; + + dd = (int)(coord/100); + dd = (float)dd; + ss = coord - dd*100; + codd = dd + (ss/60); + + return codd; +} + +float Adafruit_GPS::getDistance(float lat_1, float lon_1, float lat_2, float lon_2) { + float dlat; + float dlon; + float a, c, d; + float R = 6371000; + //char u[] = "km"; + + dlat = (lat_2-lat_1)/100; + dlon = (lon_2-lon_1)/100; + + dlat = dlat * (M_PI/180); + dlon = dlon * (M_PI/180); + + lat_1 = (lat_1/100) * (M_PI/180); + lat_2 = (lat_2/100) * (M_PI/180); + + a = pow((sin(dlat/2)),2)+cos(lat_1)*cos(lat_2)*pow((sin(dlon/2)),2); + c = 2*atan2((sqrt(a)),(sqrt(1-a))); + d = R*c; + + //if (R<1) { + // u = "m" + // } + + return d; +} + +float Adafruit_GPS::getSteps(float distance, float height) { + float steps, avg_steps; + + avg_steps = 0.413*(height/100); + steps = distance/avg_steps; + + return steps; +} + +float Adafruit_GPS::getAvgSpeed(float distance, int t) { + float avg_speed; + + t = (float) t; + + avg_speed = (distance/1000)/(t/3600); + + return avg_speed; +} + +/* +float toRadians(float deg) { + float rad; + + rad = deg * (M_PI/180); + + return rad; +} +*/ + \ No newline at end of file