J-M-L:
par exemple regardez cela:float f = 12.345;
char message[30]; // prévoir assez de place pour ce que vous voulez y stocker + 1 caractère en plus (le '\0' à la fin)
#define precision 3
void setup() {
Serial.begin(115200);
Serial.print("f = "); Serial.println(f, precision);
dtostrf(f, 1, precision, message); // avr-libc: <stdlib.h>: General utilities
Serial.print("f = "); Serial.println(message);
}
void loop() {}
ça envoie sur la console série le même message ASCII mais c'est géré de 2 façons différentes.
Bonjour
J'ai essayé d'utiliser la fonction dtostrf mais sans succès. Voici mon code
const int sensorNumber = 3;
const char* sensorName[] = {"temperature", "moisture", "noiselevel"};
char* sensorValue[sensorNumber];
void setup()
{
Serial.begin(115200);
...
}
void loop()
{
dtostrf(GetTemperatureAM2302(), 1, 3, sensorValue[0]);
...
}
Sachant que GetTemperatureAM2302() retourne un float.
Je n'ai pas d'erreur à la compilation mais le code ne fonctionne pas. Je dois déborder sur de l'espace mémoire.
Il y a quelque chose qui m'échappe. Quand je déclare mon sensorValue avec char* sensorValue[sensorNumber]; je déclare bien un pointeur sur un tableau de char qui aura 3 cases. Mais jamais je ne réserve de taille mémoire pour le contenu de chaque case !
Merci de vos retours