Stap 6: Het lezen van de gps
Opstelling van de bibliotheken in de header van het script:
#include Adafruit_GPS.h
#include SoftwareSerial.h
HardwareSerial mySerial = Serial1;
Adafruit_GPS GPS (& mySerial);
Selecteer de gps bij opstarten:
pinMode(chipSelect,OUTPUT);
digitalWrite(chipSelect,LOW);
GPS.begin(9600);
Instellen van de vernieuwingsfrequentie / / 1Hz werkt goed en bladeren tijd om uit te voeren GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); registreren u kunt ook 0,1 Hz, 5 Hz en vernieuwingsfrequentie van 10 Hz
RMC (aanbevolen minimum): GGA (fix gegevens) met inbegrip van hoogte GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
Updates over de status van antenne uitschakelen als de firmware het toelaat
GPS.sendCommand(PGCMD_NOANTENNA);
.
Lees de GPS door interrupt met het oog op de echo naar de seriële monitor.
Merk op dat de gegevens daadwerkelijk wordt beschouwd in de Adafruit_GPS.h bibliotheek code, niet in deze interrupt routine.
1ms onderbreken op timer0 om gps data echo-
Als GPSECHO = true useInterrupt(true); Lees input door interrupt als de waarde true
.
That's it! Loop en lezen:
GPS.newNMEAreceived() is ingesteld op true als nieuwe gps-informatie is aangekomen.
GPS.parse(stringptr) is ingesteld op true als waarden succesvol (verdeelde) uit de ruwe GPS-tekenreeksen gescheiden zijn.
GPS.fix is ingesteld op true als de GPS rapporten met een correctie op zijn positie.
Als de gps heeft een fix uittreksel van de waarden voor positie, hoogte, snelheid, peiling, tijd, geoidheight, satellieten en hdop.
Standpunt wordt geretourneerd in decimale Longitude en Latitude, snelheid in knopen, afstand in meter.
.
Als (GPS.newNMEAreceived()) {}
char * stringptr = GPS.lastNMEA();
.
if (!. GPS.parse(stringptr)) de terugkeer; gaan rond als de waarde false
.
if(GPS.Fix) {}
digitalWrite (ledGreen, hoge);
vaste = true; herinner mij in het geval dat het verandert mid proces
mymillis = GPS.milliseconds;
myseconds = GPS.seconds;
MyTime = String(GPS.hour) + ":"+ String(GPS.minute) +":";
logtime = mytime;
logtime += String (int (myseconds + mymillis/1000 + 0,1)); Indien binnen 0,1 S ronden
MyTime += String (myseconds + mymillis/1000); teruggeroepen voltijds
myyear = String(GPS.day) + "/" + String(GPS.month) + "/";
lcdyear = myyear; theyear = String(GPS.year);
myyear += theyear;
Mylen = theyear.length();
lcdyear += theyear.substring(mylen-1,mylen); laatste cijfer alleen om in te passen
breedte = GPS.latitudeDegrees;
lengte = GPS.longitudeDegrees;
altitudem = GPS.altitude;
altitudef = altitudem * fconvert;
speedknots = GPS.speed;
speedmph = speedknots * 1.15077945;
speedkph = speedknots * 1.85200;
rubriek = GPS.angle;
satellieten = GPS.satellites;
GeoID = GPS.geoidheight;
HDOP = 7-int(GPS. HDOP + 0,5);