Peser des poids et les soustraire avec HX711

Bonjour,

Je veux récupérer la valeur d'un poids dans la variable float LecturePoids afin par la suite réaliser un calcul

  1. void LectureDuPoids()

  2. {

  3. Serial.println(scale.get_units(10), 0) ;

  4. LecturePoids = (scale.read_average(10), 0) ;

  5. Serial.println(LecturePoids );

  6. LecturePoids =float( (scale.read_average(10), 0) );

  7. Serial.println(LecturePoids );

  8. }

La ligne 3. m'imprime bien le poids
La ligne 5 et 7 m'imprime 0.00

Comment puis-je transformer la valeur" scale.get_units(10), 0" en nombre avec 2 décimales ?

Je vous remercie d'avance pour votre réponse

Bonne soirée confinée
Pierre

Bonsoir,

Tout d'abord, mets ton code entre balises (la première icône à gauche). Ce sera plus clair.

Ensuite quand tu écris :

print(LecturePoids, 0);

Ça signifie que la valeur poids n'aura pas de décimales.

Pour avoir deux décimales tu écris :

print(LecturePoids, 2);

Donc je ne comprends pas ta syntaxe :

LecturePoids = scale_read_average(10), 0);

Pour avoir le poids écris simplement :

LecturePoids =scale_get_units();

Puis pour avoir deux décimales :

print(LecturePoids, 2);

En supposant que la bibliothèque utilisée est la HX711 de Bodge, on voit que :

  • scale.read_average renvoie un long
  • scale.get_units renvoie un float

Pour afficher un float, print permet de choisir le nombre de décimales :
Serial.print(monFloat, 3) donnera 3 décimales. Mais, ça ne marche pas pour un entier (ou un long) puisque ... il n'y a pas de décimales.

Tu peux faire quelque chose comme ça :

void LectureDuPoids() {
  float units = scale.get_units(10);
  long LecturePoids = scale.read_average(10);
  Serial.println(LecturePoids);
  Serial.println(units, 2);
}

LecturePoids sera affiché comme un entier, qu'il est.
units avec 2 chiffres après la virgule.

Attention :

  • read_average renvoie la moyenne du nombre de mesures spécifié en argument. Ce sont les mesures brutes.
  • get_units renvoie cette moyenne, diminuée d'un offset (la tare a priori), et ensuite divisée par un facteur d'échelle.

Donc pour se servir de get_units, il faut définir auparavant l'offset et le facteur d'échelle, via les fonctions set_offset et set_scale