Étape 6: Lecture du gps
Les bibliothèques dans l’en-tête du script de configuration :
#include Adafruit_GPS.h
#include SoftwareSerial.h
HardwareSerial mySerial = Serial1 ;
GPS Adafruit_GPS (& mySerial) ;
Sélectionnez le gps au démarrage :
pinMode(chipSelect,OUTPUT) ;
digitalWrite(chipSelect,LOW) ;
GPS.begin(9600) ;
Fixer le taux de mise à jour / / 1Hz fonctionne bien et laisse de temps pour effectuer l’enregistrement GPS.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ) ; vous pouvez également 0,1 Hz, 5 Hz et 10 Hz fréquence de rafraîchissement
CMR (recommandé minimum): GGA (données de correctif) dont l’altitude GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA) ;
Désactiver les mises à jour sur le statut de l’antenne, si le firmware permet
GPS.sendCommand(PGCMD_NOANTENNA) ;
.
Lire le GPS par interruption dans le but de faire écho à la série monitor.
Notez que les données sont effectivement étant interprétées dans le code de bibliothèque Adafruit_GPS.h, pas dans cette routine d’interruption.
1ms interrompre le timer0 pour faciliter l’écho de données gps-
Si GPSECHO = true useInterrupt(true) ; lire d’entrée par interruption si elle est vraie
.
C’est tout ! Boucle et lire :
GPS.newNMEAreceived() a la valeur true si les nouvelles données de gps sont arrivé.
GPS.parse(stringptr) a la valeur true si les valeurs ont été correctement séparés (analysée) depuis les chaînes de texte bruts GPS.
GPS.fix a la valeur true si le GPS rapports ayant une difficulté sur sa position.
Si le gps a un correctif extrait les valeurs de position, altitude, vitesse, roulement, les temps, les geoidheight, les satellites et les hdop.
Position est retournée en décimaux Longitude et Latitude, vitesse en nœuds, distance en mètres.
.
Si (GPS.newNMEAreceived()) {}
char * stringptr = GPS.lastNMEA() ;
.
if (!. GPS.parse(stringptr)) retour ; faire le tour si faux
.
{if(GPS.Fix)}
digitalWrite (ledGreen, HIGH) ;
fixe = true ; n’oubliez pas d’État dans le cas où il change de milieu processus
mymillis = GPS.milliseconds ;
myseconds = GPS.seconds ;
Mytime = String(GPS.hour) + ": « + String(GPS.minute) + »:" ;
LOGTIME = mytime ;
LOGTIME += String (int (myseconds + mymillis/1000 + 0,1)) ; arrondir au sein de 0,1 S
Mytime = String (myseconds + mymillis/1000) ; rappelés à plein temps
myyear = String(GPS.day) + « / » + String(GPS.month) + « / » ;
lcdyear = myyear ; àvenir = String(GPS.year) ;
myyear += cuivrés ;
mylen = theyear.length() ;
lcdyear += theyear.substring(mylen-1,mylen) ; dernier chiffre que pour s’intégrer
latitude = GPS.latitudeDegrees ;
longitude = GPS.longitudeDegrees ;
altitudem = GPS.altitude ;
altitudef = altitudem * fconvert ;
speedknots = GPS.speed ;
speedmph = speedknots * 1.15077945 ;
speedkph = speedknots * 1.85200 ;
position = GPS.angle ;
satellites = GPS.satellites ;
géoïde = GPS.geoidheight ;
HDOP = 7-int(GPS. HDOP + 0,5) ;