Hola,
Aunque es del mismo montaje, abro otro hilo como derivación del anterior, ya que trata temas diferentes.
Mi necesidad es alinear valores (de una variable) a la derecha. Dichos valores pueden cambiar desde una cifra hasta 4 cifras. Y claro, si hago un UTFT.print(x,y,"123") y luego la variable cambia a 89 en la pantalla queda un bonito 893.
Sinceramente he leido mucho sobre las funciones sprintf y sprintf_p, que formatean el texto, pero, sinceramente, o no las entiendo, o no funcionan como deben en arduino.
Sobre todo me parece que fallan los valores de formato que van con variables.
Ejemplo:
byte longitud =5; // Longitud de la cadena de salida sea cual sea el número de cifras del valor
char texto [5] ; //Array para los char de salida
int numero =1234; // Valor del ejemplo (4 cifras)
sprintf("texto,|%*d|\n", longitud, numero);
Esto debería dar [ 1234], lo pongo entre corchetes para apreciar el espacio antes del 1234 que debe haber. El asterisco es para indicar que longitud es el valor que debe coger (|%5d|).
Esto no me funciona en el arduino Mega, no sé si es que lo implento mal o no sé lo que me pasa, pero sólo consigo caracteres raros e incluso cuelgues del arduino. (Por si fuera la RAM, queda bastante (más de 1K) en el momento de hacer sprinf)
Y no hablo de los decimales, porque no he conseguido hacerlo funcionar tampoco.
Es que me gustaría que la función que devuelve la String del texto sea la misma para cualquier número de cifras, tanto para enteros como para decimales, y no hacer una funcion para 3 cifras otra para 4 y otra para 5, y otras tantas para cuando llevan decimales (por suerte siempre es un solo decimal).
Por eso los argumentos del "formato" (|%*d|) deben ser variables.
Estoy pensando en hacer una funcion de manera que agregue los espacios delante según necesite, pero me parace un poco, digamos que ¿chapuza??? y que seguro que tarda mucho tiempo en completarla
¿alguna otra sugerencia para realizar el alineamiento a la derecha de los valores y que no se superpongan?
Muchas gracias de nuevo