Slave a tutti ho un modulo GPS, e leggendo il manuale dice che l'output è in questo formato:
Latitude 3342.6618 ddmm.mmmmmm
Longitude 11751.3858 dddmm.mmmmmm
Ho cercato molto su internet ma non sono riuscito a venirne a capo.
Non riesco a convertire le coordinate per inserirle su google maps.
Il problema è che se provo a stampare ad esempio 3342.6618 da seriale, su arduino anch con una Serial.println() mi tronca i numeri , provando anche con float o double...
Mi sapreste dire per favore, una funzione che mi restituisce un double o float quello che sia in modo da ottenere coordinate valid per maps?
Grazie a tutti!
Credo che tu debba cercare come convertire il formato da gradi e minuti (formato del GPS) in formato decimale ...
... fai questa ricerca su Google : "convert degrees minutes seconds to decimal degrees"
forse no..
prova così:
conversione da gradi minuti decimali in gradi decimali.
String longi = "11751.3858" ;
void setup()
{
Serial.begin(9600);
String longSenzaPunto = longi;
longSenzaPunto.replace (".", "");//levo il punto
String mm = longSenzaPunto.substring(longSenzaPunto.length() - 6);//prendo la pasrte mm
int convertion = mm.toInt() / 60;//converto in int parte mm e la divido per 60
String forMaps = longSenzaPunto.substring(0, longSenzaPunto.length() - 6) + "." + String (convertion);//premdo dd aggiungo il punto, e aggiungo l'int convertendolo in String
Serial.println(forMaps);
}
void loop()
{
}