Ecrire un float dans Wire.write()

Bonjour tout le monde,
J'écrivais un code slave_sender pour stocker les données de ma carte GPS dans mon module SD.
La latitude et la longitude étant des nombres décimaux je voulais faire un Wire.write(lat) mais ça m'écrit une erreur call of overloaded 'write(float&)' is ambiguous
Comment fixer ce problèm svp?

Selon cette page, l'argument de Wire.write est soit un byte soit un string. Donc pas un float. Si tu veux écrire un nombre à virgule, il faut le transformer en string (tableau de char).

Ça doit être faisable avec sprintf :

  char buffer [10];
  n=sprintf (buffer, "%f9.3", lat);

A tester...

Donc si j'ai bien compris, au final c'est la variable n qui va stocker la latitude et si je l'affiche je verrai bien le nombre décimal?

Non, n est le nombre de caractères qui seront écrits dans la variable buffer, qui contiendra la latitude.

Bonjour,

Tu peux envoyer ton float sous forme de tableau d'octets

  Wire.write((byte *)&lat,sizeof lat);

Le protocole NMEA 0183 retourne une trame contenant la latitude et la longitude sous forme de chaine de caractère.
Trame $GPGGA, $GPRMC, $GPGLL
Pourquoi se casser la tête à vouloir à transformer cette information en float pour la retransformer en string pour la stocker.
Autant stocker directement la chaine de caractère que retourne le GPS ce qui évite, entre autre, des conversions qui risquent de nuire à la qualité de l'information