kopia lustrzana https://github.com/ogre/habboy
132 wiersze
2.9 KiB
C
132 wiersze
2.9 KiB
C
#pragma once
|
|
|
|
#include <Wire.h> //Needed for I2C to GPS
|
|
|
|
// https://github.com/sparkfun/SparkFun_Ublox_Arduino_Library
|
|
// http://librarymanager/All#SparkFun_Ublox_GPS
|
|
|
|
#include "SparkFun_Ublox_Arduino_Library.h"
|
|
SFE_UBLOX_GPS myGPS;
|
|
|
|
bool SetupUBlox()
|
|
{
|
|
Wire.begin();
|
|
|
|
if (myGPS.begin() == false) //Connect to the Ublox module using Wire port
|
|
return false;
|
|
|
|
myGPS.setI2COutput(COM_TYPE_UBX); //Set the I2C port to output UBX only (turn off NMEA noise)
|
|
myGPS.setNavigationFrequency(3); //Set output to X times a second
|
|
myGPS.setAutoPVT(true); //Tell the GPS to "send" each solution -- NONBLOCKING
|
|
|
|
return true;
|
|
}
|
|
|
|
/*
|
|
void PrintGps()
|
|
{
|
|
Serial.print(F("gps::"));
|
|
|
|
long latitude = myGPS.getLatitude();
|
|
Serial.print(F("lat="));
|
|
Serial.print(latitude);
|
|
|
|
long longitude = myGPS.getLongitude();
|
|
Serial.print(F(",lon="));
|
|
Serial.print(longitude);
|
|
// Serial.print(F(" (degrees * 10^-7)"));
|
|
|
|
long altitude = myGPS.getAltitude();
|
|
Serial.print(F(",alt="));
|
|
Serial.print(altitude);
|
|
// Serial.print(F(" (mm)"));
|
|
|
|
long altitudeMSL = myGPS.getAltitudeMSL();
|
|
Serial.print(F(",altmsl="));
|
|
Serial.print(altitudeMSL);
|
|
|
|
byte SIV = myGPS.getSIV();
|
|
Serial.print(F(",siv="));
|
|
Serial.print(SIV);
|
|
|
|
long speed = myGPS.getGroundSpeed();
|
|
Serial.print(F(",speed="));
|
|
Serial.print(speed);
|
|
// Serial.print(F(" (mm/s)"));
|
|
|
|
long heading = myGPS.getHeading();
|
|
Serial.print(F(",heading="));
|
|
Serial.print(heading);
|
|
// Serial.print(F(" (degrees * 10^-5)"));
|
|
|
|
uint32_t acu = myGPS.getPositionAccuracy();
|
|
Serial.print(F(",acu="));
|
|
Serial.print(acu);
|
|
|
|
uint8_t fixtype = myGPS.getFixType();
|
|
Serial.print(F(",fixtype="));
|
|
Serial.print(fixtype);
|
|
|
|
Serial.print(F("\n"));
|
|
}
|
|
*/
|
|
|
|
struct GPS_STATE_T
|
|
{
|
|
long latitude;
|
|
long longitude;
|
|
int16_t altitude;
|
|
int16_t altitudeMSL;
|
|
uint8_t SIV;
|
|
uint16_t speed;
|
|
uint16_t heading;
|
|
uint32_t acu;
|
|
uint8_t fixtype;
|
|
};
|
|
|
|
GPS_STATE_T G_GPS_STATE;
|
|
|
|
void UpdateGps() // this takes 500ms
|
|
{
|
|
G_GPS_STATE.latitude = myGPS.getLatitude();
|
|
G_GPS_STATE.longitude = myGPS.getLongitude();
|
|
G_GPS_STATE.altitude = myGPS.getAltitude();
|
|
G_GPS_STATE.altitudeMSL = myGPS.getAltitudeMSL();
|
|
G_GPS_STATE.SIV = myGPS.getSIV();
|
|
G_GPS_STATE.speed = myGPS.getGroundSpeed();
|
|
G_GPS_STATE.heading = myGPS.getHeading();
|
|
G_GPS_STATE.acu = myGPS.getPositionAccuracy();
|
|
G_GPS_STATE.fixtype = myGPS.getFixType();
|
|
}
|
|
|
|
void PrintGpsState()
|
|
{
|
|
Serial.print(F("gps::"));
|
|
|
|
Serial.print(F("lat="));
|
|
Serial.print(G_GPS_STATE.latitude);
|
|
|
|
Serial.print(F(",lon="));
|
|
Serial.print(G_GPS_STATE.longitude);
|
|
|
|
Serial.print(F(",alt="));
|
|
Serial.print(G_GPS_STATE.altitude);
|
|
|
|
Serial.print(F(",altmsl="));
|
|
Serial.print(G_GPS_STATE.altitudeMSL);
|
|
|
|
Serial.print(F(",siv="));
|
|
Serial.print(G_GPS_STATE.SIV);
|
|
|
|
Serial.print(F(",speed="));
|
|
Serial.print(G_GPS_STATE.speed);
|
|
|
|
Serial.print(F(",heading="));
|
|
Serial.print(G_GPS_STATE.heading);
|
|
|
|
Serial.print(F(",acu="));
|
|
Serial.print(G_GPS_STATE.acu);
|
|
|
|
Serial.print(F(",fixtype="));
|
|
Serial.print(G_GPS_STATE.fixtype);
|
|
} |