diff --git a/src/gps_utils.cpp b/src/gps_utils.cpp index ba218e8..6ecd7bd 100644 --- a/src/gps_utils.cpp +++ b/src/gps_utils.cpp @@ -104,4 +104,40 @@ namespace GPS_Utils { } } + String getCurrentHeadingHuman(float bearing) { + if (bearing >= 354.375 || bearing < 5.625) return ">.NW.....(N).....NE.<"; // N + if (bearing >= 5.675 && bearing < 16.875) return ">.......N.|.....NE..<"; + if (bearing >= 16.875 && bearing < 28.125) return ">.....N...|...NE....<"; // NEN + if (bearing >= 28.125 && bearing < 39.375) return ">...N.....|.NE......<"; + if (bearing >= 39.375 && bearing < 50.625) return ">.N......(NE).....E.<"; // NE + if (bearing >= 50.625 && bearing < 61.875) return ">.......NE|.....E...<"; + if (bearing >= 61.875 && bearing < 73.125) return ">.....NE..|...E.....<"; // ENE + if (bearing >= 73.125 && bearing < 84.375) return ">...NE....|.E.......<"; + if (bearing >= 84.375 && bearing < 95.625) return ">.NE.....(E).....SE.<"; // E + if (bearing >= 95.625 && bearing < 106.875) return ">.......E.|.....SE..<"; + if (bearing >= 106.875 && bearing < 118.125) return ">.....E...|...SE....<"; // ESE + if (bearing >= 118.125 && bearing < 129.375) return ">...E.....|.SE......<"; + if (bearing >= 129.375 && bearing < 140.625) return ">.E......(SE).....S.<"; // SE + if (bearing >= 140.625 && bearing < 151.875) return ">.......SE|.....S...<"; + if (bearing >= 151.875 && bearing < 163.125) return ">.....SE..|...S.....<"; // SES + if (bearing >= 163.125 && bearing < 174.375) return ">...SE....|.S.......<"; + if (bearing >= 174.375 && bearing < 185.625) return ">.SE.....(S).....SW.<"; // S + if (bearing >= 185.625 && bearing < 196.875) return ">.......S.|.....SW..<"; + if (bearing >= 196.875 && bearing < 208.125) return ">.....S...|...SW....<"; // SWS + if (bearing >= 208.125 && bearing < 219.375) return ">...S.....|.SW......<"; + if (bearing >= 219.375 && bearing < 230.625) return ">.S......(SW).....W.<"; // SW + if (bearing >= 230.625 && bearing < 241.875) return ">.......SW|.....W...<"; + if (bearing >= 241.875 && bearing < 253.125) return ">.....SW..|...W.....<"; // WSW + if (bearing >= 253.125 && bearing < 264.375) return ">...SW....|.W.......<"; + if (bearing >= 264.375 && bearing < 275.625) return ">.SW.....(W).....NW.<"; // W + if (bearing >= 275.625 && bearing < 286.875) return ">.......W.|.....NW..<"; + if (bearing >= 286.875 && bearing < 298.125) return ">.....W...|...NW....<"; // WNW + if (bearing >= 298.125 && bearing < 309.375) return ">...W.....|.NW......<"; + if (bearing >= 309.375 && bearing < 320.625) return ">.W......(NW).....N.<"; // NW + if (bearing >= 320.625 && bearing < 331.875) return ">.......NW|.....N...<"; + if (bearing >= 331.875 && bearing < 343.125) return ">.....NW..|...N.....<"; // NWN + if (bearing >= 343.125 && bearing < 354.375) return ">...NW....|.N.......<"; + return "?"; + } + } \ No newline at end of file diff --git a/src/gps_utils.h b/src/gps_utils.h index 18aaef3..aa562c4 100644 --- a/src/gps_utils.h +++ b/src/gps_utils.h @@ -12,6 +12,7 @@ namespace GPS_Utils { void calculateDistanceTraveled(); void calculateHeadingDelta(int speed); void checkStartUpFrames(); + String getCurrentHeadingHuman(float bearing); }