Elaborare in ricezione 2 valori float in seriale

Non può funzionare con la classe String perché la copia byte per byte sarebbe mancante di quella porzione di dati allocati dinamicamente da String. Servirebbe una copia profondo ma il vero problema è lato ricevente.

La funzione ricevente potrebbe essere simili a

template< typename T > void recv(const T &t ){
    const uint8_t *ptr = (const uint8_t*) &t;
    
    for (uint8_t idx = 0; idx < sizeof(T); idx++ ) {
        if (Serial.available()) {
            byte data = Serial.read();
            ptr[idx] = data;
        }
    }
}

Sempre da testare, questa poi non la ho testata neanche sul PC, quindi occhio.

Adesso mi viene in mente che ne abbiamo parlato di una storia simile, un paio di anni fa

Può essere, di sicuro ne abbiamo parlato al tempo in cui leo72 era nei panni di Guglielmo, poi
ci dovrebbero essere dei post di @astrobeed circa l'argomento, ma solo C nudo e crudo.

Attenzione all'uso dei template C++, essi generano codice specializzato durante la compilazione.
Un uso smodato dei template potrebbe fare gonfiare la dimensione del programma.

Ciao.