Tout est dans le titre : je cherche à afficher un double avec printf sur un ESP8266 : quel est le format ?
%d pour int, %? pour double
Au passage, y a-t-il une liste quelque part, compatible Arduino ou ESP8266 ?
Merci
Tout est dans le titre : je cherche à afficher un double avec printf sur un ESP8266 : quel est le format ?
%d pour int, %? pour double
Au passage, y a-t-il une liste quelque part, compatible Arduino ou ESP8266 ?
Merci
Il y a déjà cette page :
https://www.cplusplus.com/reference/cstdio/printf/
et autre chose que je vais m'efforcer de retrouver.
Retrouvé :
Serial.printf("Boucle = %" PRIu32 " Compteur1 = %" PRIu64 " Compteur2 = %" PRIu64 " Diff = %" PRIu64"\n", boucle, compteur1, compteur2, compteur2-comp
C'était à l'occasion de mes tentatives de lire les registres d'un ESP32.
J'avais trouvé cette syntaxe :
"zzzzzzzzzz %" PRIu32 " ou PRIu64 pour des unsigned int sur 4 ou 8 octets.
Je ne sais plus où je l'avais trouvé ni ce qu'il faut utiliser pour les double float.
Je n'ai pas mes archives vu que j'avais anticipé le confinement et que j'ai quitté ma banlieue de Bordeaux pour un hameau de 4 maisons perdu dans la forêt et à 2km du premier village dans les Landes.
hello
ici
Merci
68tjs:
Je n'ai pas mes archives vu que j'avais anticipé le confinement et que j'ai quitté ma banlieue de Bordeaux pour un hameau de 4 maisons perdu dans la forêt et à 2km du premier village dans les Landes.
C'est vers Le Barp ?
J'ai vu que 'double' pour ESP8266 c'est un float double précision (8 octets)
Point que je n'avais pas vu et qui faisait que je n'y arrivai pas avec un long double :
lesept:
C'est vers Le Barp ?
Le Barp c'est en Gironde ne confondons pas.
C'est à 7 km de Mimizan (bourg) : il fait un temps magnifique, on mange tous les midi dehors.
Et pour s'occuper on repeint les volets (avec la peinture achetée il y a 3 ans), démousse le toit, bouche les passages à sangliers, bref tout ce qui aurait du être fait depuis plusieurs années mais soit il faisait pas assez beau, soit il faisait trop chaud, soit on avait la flemme.
Mais question bricolage micro pas trop de matos ici.
Je ne mettais pas Mimizan dans la banlieue bordelaise...
C'est cool, en plus il fait super beau !
Autre question : passage de tableau en argument de fonction.
J'ai une fonction avec un tableau en entrée et un tableau résultat en sortie : quelle est la syntaxe ?
void mafonction (double in[], double out[], int parametre_quelconque) {
}
Et l'appel de la fonction ?
mafonction (in, out, param)
Comme cela :
double tab1[5] = {1.0, 2.0, 3.0, 4.0, 5.0};
double tab2[5];
void mafonction(double *in, double *out, int parametre_quelconque) {
memcpy(out, in, sizeof(tab1));
}
void setup() {
Serial.begin(115200);
mafonction(tab1, tab2, 0);
for (int i = 0 ; i < 5 ; i++) {
Serial.println(tab2[i]);
}
}
void loop() {}
Merci Henri ! ![]()
68tjs:
Serial.printf("Boucle = %" PRIu32 " Compteur1 = %" PRIu64 " Compteur2 = %" PRIu64 " Diff = %" PRIu64"\n", boucle, compteur1, compteur2, compteur2-compJ'avais trouvé cette syntaxe :
"zzzzzzzzzz %" PRIu32 " ou PRIu64 pour des unsigned int sur 4 ou 8 octets.Je ne sais plus où je l'avais trouvé
ça s'appelle "Format macro constants" ça permet un formatage portable des valeurs entre différentes plates-formes où les tailles des types de nombres primitifs peuvent différer (et ça marche parce que le C ou le C++ concatène automatiquement les "string literals" donc on se retrouvera bien avec une chaîne de formatage unique avant les paramètres.
hbachetti:
Comme cela :...
void mafonction(double *in, double *out, int parametre_quelconque) {}
...
en C++ on peut passer par référence aussi.
double tab1[5] = {1.0, 2.0, 3.0, 4.0, 5.0};
double tab2[5];
void mafonction(double (&in)[5], double (&out)[5]) {
memcpy(out, in, sizeof(in));
}
void setup() {
Serial.begin(115200);
mafonction(tab1, tab2);
for (int i = 0 ; i < 5 ; i++) {
Serial.println(tab2[i]);
}
}
void loop() {}
il faut donner la taille du tableau dans le prototype