Michael Antonucci / Mbed 2 deprecated Assignment4_1

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
michael_antonucci
Date:
Fri Oct 28 22:16:36 2022 +0000
Commit message:
Fully working and commented code. GRADE THIS

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Oct 28 22:16:36 2022 +0000
@@ -0,0 +1,67 @@
+//Michael Antonucci
+//Last modified Oct. 27, 2022
+//Assignment 4, Exercise 1: Create a working code to parse NMEA inputs into human-readable data
+#include "mbed.h"
+
+Serial pc(USBTX, USBRX);
+
+char dataque[100]; //calls for an array of 100 characters long with the name "dataque"
+char header[5]; //calls for an array of 5 characters long with name "header"
+float lat;   //creates float "lat" for latitude
+float longi; //creates float "longi" for longitude
+char ns[1];  //creates array of 1 character with name "ns"
+char ew[1]; //creates array of 1 character with name "ew"
+float elevation; //creates float "elevation"
+char checksum[2]; //calls for an array of 2 characters long with name "checksum"
+int seconds; //creates integer "seconds" for time
+float xaccel; //creates float "xaccel" for x acceleration
+float yaccel; //creates float "yaccel" for y acceleration
+float zaccel; //creates float "zaccel" for z acceleration
+float temp; //creates float "temp" for temperature
+int main() { //starts main code
+    while(1) {
+        if (pc.readable()) { 
+        pc.scanf("%s",dataque); 
+        sscanf(dataque,"$%5s",header);
+            if (!strcmp(header,"GPRMC")) { //if the header is "GPRMC"
+             sscanf(dataque,"$%5s,%d,%f,%1s,%f,%1s,%f,*%2s", //reassigns variables to data
+                             header,&seconds,&lat,ns,&longi,ew,&elevation,checksum);
+             pc.printf("GPS NMEA string recieved:\r\n"); //prints type of message
+             pc.printf("Time: %d seconds\r\n",seconds); //prints time
+             pc.printf("Latitude: %f degrees %s",lat,ns); //prints latitude
+             pc.printf("Longitude: %f degrees %s\r\n",longi,ew); //prints longitude
+             pc.printf("Elevation: %f m\r\n",elevation); //prints elevation
+             pc.printf("Checksum Value: %s",checksum); //prints checksum value
+             }
+            else if (!strcmp(header,"IMUPO")) { //if the header is "IMUPO", print a message
+             sscanf(dataque,"$%5s,%d,%f,%f,%f,*%2s", //reassigns variables to data
+                             header,
+                             &seconds,
+                             &xaccel,
+                             &yaccel,
+                             &zaccel,
+                             checksum);
+             pc.printf("Motion Message NMEA string recieved:\r\n"); //prints type of data
+             pc.printf("Time: %d seconds\r\n",seconds); //prints time
+             pc.printf("X-Acceleration: %f m/s^2 \r\n",xaccel); //prints x acceleration
+             pc.printf("Y-Acceleration: %f m/s^2 \r\n",yaccel); //prints y acceleration
+             pc.printf("Z-Acceleration: %f m/s^2 \r\n",zaccel); //prints z acceleration
+             pc.printf("Checksum Value: %2s \r\n",checksum); //prints checksum value
+             }
+            else if (!strcmp(header,"TEMPE")) { //if the header is "TEMPE", print a message
+             sscanf(dataque,"$%5s,%d,%f,*%2s", //reassigns variables to data
+                            header,
+                            &seconds,
+                            &temp,
+                            checksum);
+             pc.printf("Temperature NMEA string recieved:\r\n"); //prints type of data
+             pc.printf("Time: %d seconds\r\n",seconds); //prints time
+             pc.printf("Temperature: %f degrees Celcius\r\n",temp); //prints temperature
+             pc.printf("Checksum Value: %2s \r\n",checksum); //prints checksum value
+             }
+            else { //if the header is not one of those three, respond with an error message
+             pc.printf("NOT A VALID NMEA INDICATOR \r\n"); //shows that error is associated with header format
+             }
+            }
+        }
+    }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Oct 28 22:16:36 2022 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file