Convirtiendo datos flotantes a cadenas (Arduino)

Fuente: Confusión.
26 del 1 de 2012

Estaba batallando un poco para convertir tipos de datos, y la verdad me constó un poco el caér en cuenta que pasar de flotantes a cadenas dentro del entorno de programación del arduino (avr-gcc) no era tan directo como creí.

Afortunadamente la respuesta vino de los propios foros de Arduino, del foro viejo para ser preciso.

La función mágina es dtostrf y según la documentacion de la biblioteca funciona así:

char* dtostrf( double         __val,
               signed char    __width,
               unsigned char  __prec,
               char *         __s
)

Facil, no…? Mejor una explicación simple:

char* dtostrf( double        variableFlotante,
               signed char  tamañoMinimo,
               unsigned char presicion,
               char          *cadenaDondeGuardar
)

Esta función recibe la variable que queremos convertir (variableFlotante), el tamaño mínimo de la cadena resultante (tamañoMinimo) incluyendo el punto decimal y el signo negativo en caso necesario, el número de dígitos tras el punto decimal (presicion) y una cadena con suficiente espacio para guardar (cadenaDondeGuardar). Regresa un apuntador a la cadenaDondeGuardar.

Y un pequeño código de ejemplo:

...
char cadenaTemporal[6];
double temperatura;

temperatura = leerSensorTemperatura();
dtostrf(temperatura, 5, 2, cadenaTemporal);
hacerAlgoCon(cadenaTemporal);
...

Cuando menos tengo que decir que fue interesante :)


Recomendar a un amigo