J'ai ce croquis Arduino,
char temperature[10];
float temp = 10.55;
sprintf(temperature,"%f F", temp);
Serial.println(temperature);
la température est imprimée comme
? F
Des idées sur la façon de formater ce float? J'ai besoin que ce soit une chaîne de caractères.
Pour des raisons de performances, %f
N'est pas inclus dans l'implémentation Arduino de sprintf()
. Une meilleure option serait d'utiliser dtostrf()
- vous convertissez la valeur en virgule flottante en chaîne de style C. La signature de la méthode ressemble à:
char *dtostrf(double val, signed char width, unsigned char prec, char *s)
Utilisez cette méthode pour le convertir en chaîne C-Style, puis utilisez sprintf, par exemple:
char str_temp[6];
/* 4 is mininum width, 2 is precision; float value is copied onto str_temp*/
dtostrf(temp, 4, 2, str_temp);
sprintf(temperature,"%s F", str_temp);
Vous pouvez modifier la largeur minimale et la précision afin qu'elles correspondent au float que vous convertissez.
Comme indiqué précédemment, le support Float n'est pas inclus dans sprintf
sur Arduino.
Arduino a sa propre classe String .
String value = String(3.14);
puis,
char *result = value.c_str();
Construit une instance de la classe String. Plusieurs versions construisent des chaînes à partir de différents types de données (c'est-à-dire, les formatez en séquences de caractères), notamment: