Bonjour,
je programme actuellement une arduino, pour qu'il reçoit une trame GPS avec son protocole NMEA
Cependant, le GPS n'a pas l'air de me comprendre :
Code:#include <SoftwareSerial.h> #include <string.h> #include <ctype.h> #include <MsTimer2.h> SoftwareSerial GPS(5,6); boolean ok; void okay() { Serial.println(ok); ok=1; Serial.println(ok); } int c; char trame[300]=" "; int conta=0; void envoiGPS (String chaineEnvoi) { String checksumChaine=String (checkSum(chaineEnvoi),HEX); chaineEnvoi="$"+chaineEnvoi+"*"+checksumChaine+char(0xD)+char(0xA); GPS.flush(); GPS.print(chaineEnvoi); } int checkSum (String chaineTest) { int test=0; for(int i=0; i<chaineTest.length(); i++) { char c = chaineTest.charAt(i); if(test ==0) { test = byte(c); } else { test=test ^byte(c); } } return test; } void setup() { while (!Serial); Serial.begin(115200); GPS.begin(9600); MsTimer2::set(2000, okay); MsTimer2::start(); envoiGPS("PSRF103,00,00,00,01");//desactive GGA envoiGPS("PSRF103,01,00,00,01");//GLL envoiGPS("PSRF103,02,00,00,01"); //GSA envoiGPS("PSRF103,03,00,00,01");//GSV envoiGPS("PSRF103,04,00,00,01");//VTG envoiGPS("PSRF103,05,00,00,01");//RMC GPS.flush(); } void loop() { GPS.flush(); if(ok==1) { envoiGPS("PSRF103,00,01,00,01");//réactive GGA while(GPS.available()) { c= GPS.read(); trame[conta]=c; Serial.write(trame[conta]); conta++; if (c==13) { conta=0; } } ok=0; } }
Le code doit recevoir une trame GGA toute les deux secondes mais je vois pas du tout ce qui ne va pas..
Merci
-----