long int partie_fractionnaire(float f, int nbdigits) { f=f-(long int)f; while (nbdigits>0) { f=f*10; nbdigits--; } return (long int)f; } long int partie_entiere(float f) { return (long int)f; } void SendGPRMC(float time, float lat,float lon) { char chaine[100]; char *finchaine; char checksum=0; char NS,EW; if (lat>0){ NS='N'; }else{ NS='S'; lat=-lat; } if (lon>0){ EW='E'; }else{ EW='W'; lon=-lon; } sprintf(chaine, "$GPRMC,%ld.%02ld,A,%ld.%05ld,%c,%ld.%05ld,%c,,,,,,*",partie_entiere(time),partie_fractionnaire(time,2),partie_entiere(lat),partie_fractionnaire(lat,5),NS,partie_entiere(lon),partie_fractionnaire(lon,5),EW); finchaine=chaine; while( (*finchaine)!=0) { checksum^=(*finchaine); finchaine++; } finchaine=chaine+strlen(chaine); sprintf(finchaine, "%02X\r\n",checksum); Serial.print(chaine); } void setup() { Serial.begin(9600); Serial.println("Hello, world?"); // Envoi de la chaîne terminée par un saut de ligne } float time=154936.0; void loop() { SendGPRMC(time,4338.6124 ,00126.7337); time=time+0.1; delay(100); }