Se deslizó un error con el [4].
Este código usando Platformio permite usar sprintf sin dtostrf
#include <Arduino.h>
double tdsvalue = 3.14;
char cdv[5];
char buffer[20];
void setup() {
Serial.begin(115200);
dtostrf(tdsvalue,4,2,cdv);
sprintf(buffer, "%s", cdv );
Serial.println(buffer);
Serial.println("Ahora gracias a Platformio usando punto floatnte");
sprintf(buffer, "%4.2f", tdsvalue );
Serial.println(buffer);
}
void loop() {
// put your main code here, to run repeatedly:
}
Esta es la salida en el monitor serie
--- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters
--- Miniterm on COM9 115200,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
3.14
Ahora gracias a Platformio usando punto floatnte
3.14
Para ello hay que agregar en Platformio.ini las maravillosa línea
build_flags = -Wl,-u,vfprintf -lprintf_flt -lm
Acá todo el archivo Platformio.ini que uso para el nano ATmega328 equivalente al Old Bootloader del IDE.
[env:nanoatmega328]
platform = atmelavr
board = nanoatmega328
framework = arduino
monitor_speed = 115200
build_flags = -Wl,-u,vfprintf -lprintf_flt -lm
Insisto.
En Platformio con solo una línea agregando comandos para el compilador se puede incluir la libreria de punto flotante en los Arduinos cualquiera sea. Hay que ver con detalle como hacerlo en cada caso. No es lo mismo en DUE, MKR, etc.
La ventaja es que para quienes usamos sprinf nos permite trabajar con mucha comodidad.
En ESP8266/32 y Blue Pill esto es directo porque tienen una instrucción printf(formato,.....) que hace directamente lo que el sprintf.