Problema conversione variabile di tipo FLOAT in STRING (utilizzo dtostrf() )

/**
 *  Il programma permette di inviare via seriale
 *  byte dopo byte il contenuto di un oggetto di
 *  tipo DataBlock.
 *  Si può fare di più, ad esempio si può inviare qualunque oggetto di qualunque tipo via seriale
 *  byte dopo byte.
 */

/**
 *  Per ricevere i dati da un microcontroller o computer
 *  e sufficiente creare lo stesso sketch ma al posto di:
 *  Serial.write(*ptrTo);
 *  ci mettiamo:
 *  if (Serial.available() > 0) {
 *    *ptrTo = Serial.read();
 *  }
 *  L'obbiettivo è di leggere i dati e salvarli nell'oggetto dataBlock
 *  PS: non testata la lettura
 */
/*
  tipo di struttura per collezionare dati
  per poi spedirli via seriale byte per byte
*/
typedef struct
{
  float    arg0;
  float    arg1;
  float    arg2;
  byte     arg3;
  byte     arg4;
  byte     arg5;
  uint32_t arg6;
} DataBlock;

// global variable

bool alredySend;    // false per inviare i dati

DataBlock dataBlock; // oggetto dataBlock da spedire

void setup()
{

  alredySend = false;

  delay(2000);
  Serial.begin(115200);

  // carica dati a caso nell'oggetto dataBlock
  dataBlock.arg0 = 152.24;
  dataBlock.arg1 = 489.569;
  dataBlock.arg2 = 100.029;

  dataBlock.arg3 = 49;        // un byte 1
  dataBlock.arg4 = 50;        // un byte 2
  dataBlock.arg5 = 51;        // un byte 3
  dataBlock.arg6 = 456898;     // 32 bit

}

void loop()
{

  if (alredySend == false) {

    uint8_t *ptrTo = (uint8_t *)&dataBlock;

    for (uint8_t i = 0; i < sizeof(dataBlock); i++) {

      Serial.write(*ptrTo);  // spedisce il dato puntato da ptrTo
      ptrTo++;                     // punto al prossimo byte


    }

    alredySend = true;  // i dati sono stati spediti
  }


}

Anziché convertire da float ad intero e spedire i dati come stringhe, si spedisce
byte per byte il contenuto di una porzione di memoria RAM in cui ci abbiamo messo
la nostra collezione di dati come appunto è dataBlock.

Spero possa tornarti utile, ciao.