Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SoftwareSerial.h>
- SoftwareSerial GPSModule(4, 3); // RX, TX
- int updates;
- int failedUpdates;
- int pos;
- int stringplace = 0;
- float speed1=0;
- String timeUp;
- String nmea[15];
- String labels[12] {"Time: ", "Status: ", "Latitude: ", "Hemisphere: ", "Longitude: ", "Hemisphere: ", "Speed: ", "Track Angle: ", "Date: "};
- void setup() {
- Serial.begin(57600);
- GPSModule.begin(9600);
- }
- void loop() {
- Serial.flush();
- GPSModule.flush();
- while (GPSModule.available() > 0)
- {
- GPSModule.read();
- }
- if (GPSModule.find("$GPRMC,")) {
- String tempMsg = GPSModule.readStringUntil('\n');
- for (int i = 0; i < tempMsg.length(); i++) {
- if (tempMsg.substring(i, i + 1) == ",") {
- nmea[pos] = tempMsg.substring(stringplace, i);
- stringplace = i + 1;
- pos++;
- }
- if (i == tempMsg.length() - 1) {
- nmea[pos] = tempMsg.substring(stringplace, i);
- }
- }
- updates++;
- nmea[2] = ConvertLat();
- nmea[4] = ConvertLng();
- speed1 = (nmea[6].toFloat())*1.60934;
- for (int i = 0; i < 9; i++) {
- Serial.print(labels[i]);
- Serial.print(speed1);//nmea[i]);
- Serial.println("");
- }
- }
- else {
- failedUpdates++;
- }
- stringplace = 0;
- pos = 0;
- }
- String ConvertLat() {
- String posneg = "";
- if (nmea[3] == "S") {
- posneg = "-";
- }
- String latfirst;
- float latsecond;
- for (int i = 0; i < nmea[2].length(); i++) {
- if (nmea[2].substring(i, i + 1) == ".") {
- latfirst = nmea[2].substring(0, i - 2);
- latsecond = nmea[2].substring(i - 2).toFloat();
- }
- }
- latsecond = latsecond / 60;
- String CalcLat = "";
- char charVal[9];
- dtostrf(latsecond, 4, 6, charVal);
- for (int i = 0; i < sizeof(charVal); i++)
- {
- CalcLat += charVal[i];
- }
- latfirst += CalcLat.substring(1);
- latfirst = posneg += latfirst;
- return latfirst;
- }
- String ConvertLng() {
- String posneg = "";
- if (nmea[5] == "W") {
- posneg = "-";
- }
- String lngfirst;
- float lngsecond;
- for (int i = 0; i < nmea[4].length(); i++) {
- if (nmea[4].substring(i, i + 1) == ".") {
- lngfirst = nmea[4].substring(0, i - 2);
- //Serial.println(lngfirst);
- lngsecond = nmea[4].substring(i - 2).toFloat();
- //Serial.println(lngsecond);
- }
- }
- lngsecond = lngsecond / 60;
- String CalcLng = "";
- char charVal[9];
- dtostrf(lngsecond, 4, 6, charVal);
- for (int i = 0; i < sizeof(charVal); i++)
- {
- CalcLng += charVal[i];
- }
- lngfirst += CalcLng.substring(1);
- lngfirst = posneg += lngfirst;
- return lngfirst;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement