Icono del sitio Programar fácil con Arduino

Conversión de números a cadenas en Arduino

Recientemente, haciendo un sketch para un proyecto, me dí cuenta de una pequeña dificultad a la hora de hacer conversión de números a cadenas en Arduino. Existen varias soluciones y en este artículo vamos a ver algunas de ellas.

Conversión de números a cadenas con print()

Una de las primeras soluciones fue esta.

Es decir, llamar una vez a print para la cadena de texto y posteriormente llamar otra vez a la función println con el número (el uso de esta última es para que me pusiera un salto de linea). Esta solución no me gustó dado que se llama múltiples veces a a función print o println.

Además, si en la misma línea tuviéramos varios valores, la complejidad del código y el número de lineas aumenta de manera casi exponencial. No tenemos que perder nunca de vista que en los microcontroladores tenemos una memoria bastante limitada.

Utilizando sprintf para convertir números a cadenas

Buscando por Internet encontré la función sprintf,la cual describo a continuación.

Para ver un listado de máscaras que podemos usar seguir el siguiente enlace. (Hay que pensar, que la función sprintf es una adaptación para Arduino y algunas máscaras no funcionan correctamente, como veremos en las siguientes lineas)

Pues me puse a probar, primero con números enteros con el siguiente código

Funciona, la salida que obtuve en el monitor serie fue la siguiente:

Lo siguiente fue probar con números en coma flotante, así que modifique el código para que quedará de esta forma.

El formato del número de coma flotante %5,2f indica que tendremos 5 dígitos en la parte entera con 2 decimales. La f indica que es un número de coma flotante.

Pero la salida no fue la esperada:

Es decir, arduino no es capaz de manejar a través de la función sprintf los números en coma flotante.

Solución final a la conversión de números a cadenas en Arduino

Pero encontré otra alternativa a la función sprintf, dtostrf. Así que me decidí a probarla para encontrar la solución a este problema. Para utilizar dicha función debemos conocer los parámetros.

Vuelvo a modificar el código anterior para probarlo

Comprobamos que el código funciona, siendo la salida por el monitor serie la siguiente.

Conclusión

Dependerá, como siempre, del proyecto en el que estemos trabajando y de nuestro objetivo, utilizar uno de estos métodos para convertir un número en cadena con Arduino. Hemos visto la utilización print, sprintf y dtostrf.

Gracias a Shutterstock por ceder los derechos de la imagen

Salir de la versión móvil