Paso 6: Leer el gps
Las bibliotecas en la cabecera del script de instalación:
#include Adafruit_GPS.h
#include SoftwareSerial.h
HardwareSerial mySerial = Serial1;
GPS Adafruit_GPS (y mySerial);
Seleccionar el gps en startup:
pinMode(chipSelect,OUTPUT);
digitalWrite(chipSelect,LOW);
GPS.begin(9600);
Establecer la tasa de actualización / 1Hz funciona bien y hojas de tiempo para realizar el registro de GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); o bien 0.1 Hz, 5 Hz y 10 Hz frecuencia de actualización
RMC (mínimo recomendado): GGA (fix datos) incluyendo altitud GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
Desactivar actualizaciones sobre el estado de la antena, si lo permite el firmware
GPS.sendCommand(PGCMD_NOANTENNA);
.
Lea el GPS por interrupción a los efectos de eco en el monitor Serial.
Tenga en cuenta que los datos realmente se interpreta en el código de la biblioteca de Adafruit_GPS.h, no en esta rutina de interrupción.
1ms interrupción de timer0 para facilitar gps datos eco-
Si GPSECHO = true useInterrupt(true); leer entrada de interrupción si es cierto
.
Eso es todo! Lazo y leer:
GPS.newNMEAreceived() se establece en true si ha llegado nueva información de gps.
GPS.parse(stringptr) se establece en true si los valores han sido exitosamente separados (analizado) de las cadenas de texto crudas de GPS.
GPS.fix se establece en true si el GPS informes con un arreglo en su posición.
Si el gps tiene un fix extraer los valores de posición, altitud, velocidad, teniendo, vez, geoidheight, satélites y hdop.
Posición es devuelto en decimal longitud y latitud, velocidad en nudos, distancia en metros.
.
Si (GPS.newNMEAreceived()) {}
char * stringptr = GPS.lastNMEA();
.
if (!. GPS.parse(stringptr)) retorno; dar la vuelta si es falso
.
{if(GPS.Fix)}
digitalWrite (LEDUFO, HIGH);
fijo = true; recordar el estado en caso de cambios proceso mediado
mymillis = GPS.milliseconds;
myseconds = GPS.seconds;
myTime = String(GPS.hour) + ":"+ String(GPS.minute) +":";
LOGTIME = mytime;
LOGTIME += cadena (int (myseconds + mymillis/1000 + 0.1)); redondear si dentro de 0.1 S
myTime += cadena (myseconds + mymillis/1000); completo tiempo recordó
myyear = String(GPS.day) + "/" + String(GPS.month) + "/";
lcdyear = myyear; año = String(GPS.year);
myyear += año;
Mylen = theyear.length();
lcdyear += theyear.substring(mylen-1,mylen); último dígito sólo para encajar en
latitud = GPS.latitudeDegrees;
longitud = GPS.longitudeDegrees;
altitudem = GPS.altitude;
altitudef = altitudem * fconvert;
speedknots = GPS.speed;
speedmph = speedknots * 1.15077945;
speedkph = speedknots * 1.85200;
título = GPS.angle;
los satélites = GPS.satellites;
geoide = GPS.geoidheight;
hdop = 7-int(GPS. HDOP + 0.5);