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: BMP180 BNO055_fusion Fonts GPSISR HTU21D SDFileSystem UniGraphic mbed uGUI
Fork of Bicycl_Computer_NUCLEO-F411RE by
Revision 13:1a9c0f9d7128, committed 2017-03-01
- Comitter:
- trevieze
- Date:
- Wed Mar 01 03:39:33 2017 +0000
- Parent:
- 12:49600de70963
- Child:
- 14:4f0ebc5a4f00
- Commit message:
- Got a good start at waypoints with Nav library, need to add BNO055 Cal eprom storage and retreval from arduino code I have.
Changed in this revision
| GPSISR.lib | Show annotated file Show diff for this revision Revisions of this file |
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/GPSISR.lib Tue Feb 28 01:32:00 2017 +0000 +++ b/GPSISR.lib Wed Mar 01 03:39:33 2017 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/trevieze/code/GPSISR/#7240a18102a6 +https://developer.mbed.org/users/trevieze/code/GPSISR/#c5f700c1e1af
--- a/main.cpp Tue Feb 28 01:32:00 2017 +0000
+++ b/main.cpp Wed Mar 01 03:39:33 2017 +0000
@@ -28,6 +28,7 @@
#include "BMP180.h"
#include "SDFileSystem.h"
#include "GPSISR.h"
+#include "nav.h"
#include "ArialR16x17.h"
@@ -106,6 +107,11 @@
// Set up serial interrupe service handler for gps characters.
GPS MyGPS(PIN_TX_GPS,PIN_RX_GPS, 9600);
+//Navigation Class.
+NAV nav;
+double plat = 42.826420;
+double plon = -84.219413;
+
void Draw_Compass_Rose(void);
void arrow(int x2, int y2, int x1, int y1, int alength, int awidth, int colour);
@@ -131,13 +137,13 @@
TFT.foreground(Blue);
TFT.background(White);
wait(0.1);
-
+
Draw_Compass_Rose();
while (1) {
- TFT.set_font((unsigned char*) ArialR20x20);
- //check if we recieved a new message from GPS, if so, attempt to parse it,
+ TFT.set_font((unsigned char*) ArialR20x20);
+ //check if we recieved a new message from GPS, if so, attempt to parse it,
if (refresh_Timer.read_ms() >= refresh_Time) {
refresh_Timer.reset();
@@ -165,7 +171,7 @@
if (imu.chip_ready() == 0){
pc.printf("Bosch BNO055 is NOT avirable!!\r\n");
} else {
- printf("Cal %d", imu.read_calib_status());
+ //printf("Cal %d", imu.read_calib_status());
if (imu.read_calib_status() > 0x0){
TFT.foreground(White);
TFT.locate(4, 260) ;
@@ -207,6 +213,9 @@
TFT.foreground(Blue);
TFT.locate(4, 2) ;
TFT.printf("%d-%d-%d", MyGPS.buffer.month, MyGPS.buffer.day, MyGPS.buffer.year);
+ TFT.locate(4, 50) ;
+ double waypoint = nav.CalculateDistance(MyGPS.buffer.latitude,MyGPS.buffer.longitude,plat,plon)/double(1609.344);
+ TFT.printf("%.1fMI From Perry", waypoint);
TFT.locate(140, 2) ;
TFT.printf("%d:%d:%d", MyGPS.buffer.hours, MyGPS.buffer.minutes, MyGPS.buffer.seconds);
TFT.locate(140, 260) ;
@@ -215,19 +224,24 @@
int degree;
int minutes;
int seconds;
- degree = (int)MyGPS.buffer.longitude;
- minutes = (int) ( (MyGPS.buffer.longitude - (double)degree) * 60.0);
- seconds = (int) ( (MyGPS.buffer.longitude - (double)degree - (double)minutes / 60.0) * 60.0 * 60.0 );
- TFT.printf("%d %d' %d\"lon", degree, minutes,seconds);
+ degree = (int)abs(MyGPS.buffer.longitude);
+ minutes = (int) ( (abs(MyGPS.buffer.longitude) - (double)degree) * 60.0);
+ seconds = (int) ( (abs(MyGPS.buffer.longitude) - (double)degree - (double)minutes / 60.0) * 60.0 * 60.0 );
+ TFT.printf("%d %d' %d\" %c lon", degree, minutes,seconds, MyGPS.buffer.lonc);
TFT.locate(4, 300) ;
- degree = (int)MyGPS.buffer.latitude;
- minutes = (int) ( (MyGPS.buffer.latitude - (double)degree) * 60.0);
- seconds = (int) ( (MyGPS.buffer.latitude - (double)degree - (double)minutes / 60.0) * 60.0 * 60.0 );
- TFT.printf("%d %d' %d\"lat", degree, minutes,seconds);
+ TFT.locate(4, 300) ;
+ degree = (int)abs(MyGPS.buffer.latitude);
+ minutes = (int) ( (abs(MyGPS.buffer.latitude) - (double)degree) * 60.0);
+ seconds = (int) ( (abs(MyGPS.buffer.latitude) - (double)degree - (double)minutes / 60.0) * 60.0 * 60.0 );
+ TFT.printf("%d %d' %d\" %c lat", degree, minutes,seconds, MyGPS.buffer.latc);
TFT.set_font((unsigned char*) SCProSB31x55);
TFT.locate(120, 200) ;
TFT.printf("%.1f", MyGPS.buffer.speed);
+
+
+ //pc.printf("Dist to Perry %.4f ", nav.CalculateDistance(MyGPS.buffer.latitude,MyGPS.buffer.longitude,plat,plon));
+
}
else {
TFT.locate(4, 2) ;
@@ -256,10 +270,10 @@
TFT.line(x3, y3, x4, y4, colour);
TFT.line(x3, y3, x2, y2, colour);
TFT.line(x2, y2, x4, y4, colour);
- TFT.set_font((unsigned char*) Arial12x12);
+ TFT.set_font((unsigned char*) Arial12x12);
TFT.foreground(Blue);
TFT.background(White);
- TFT.locate((centreX-2),(centreY-24));
+ TFT.locate((centreX-2),(centreY-24));
TFT.printf("N");
TFT.locate((centreX-2),(centreY+17));
TFT.printf("S");
@@ -267,7 +281,7 @@
TFT.printf("E");
TFT.locate((centreX-23),(centreY-3));
TFT.printf("W");
- TFT.set_font((unsigned char*) ArialR20x20);
+ TFT.set_font((unsigned char*) ArialR20x20);
}
void Draw_Compass_Rose(void) {
