fonction scale.get_units()

bonjour nous utilisons la librairie HX711.h

pour lire une balance 0-1kg

nous utilisons la fonction scale.get_units() pour lecture du poids mais plus on fait de mesure et plus ça ralentit l arduino

scale.get_units(5) equivaut a des interruptions de 500ms facile ce qui est assez enormel

est ce que quelqu'un sait si l on peut optimiser

merci

void lireEtAfficherPoids()
{
  poidsLu = scale.get_units(3);
  if(poidsLu != poidsLuPrev)
  {
    lcd.setCursor(0, 1);
    dtostrf(poidsLu, 7, 1, buf_double);
    sprintf(msg, "SEL=tar|%sg", buf_double);
    lcd.print(msg);
	  poidsLuPrev = poidsLu;
  }
}

Postez un code minimal fonctionnel (compilable) démontrant votre problème et précisez la question en expliquant votre câblage et les composants utilisés.

Lisez la doc:

The get_value() and get_units() functions can receive an extra parameter "times", and they will return the average of multiple readings instead of a single reading.

il n’y a donc rien d’anormal à ce que la durée d’exécution De la fonction soit proportionnelle au paramètre (3 lectures à effectuer pour en faire la moyenne c’est 3 fois plus long que faire une seule lecture)

Avez vous lu la Datasheet de votre composant? Combien de temps est nécessaire pour obtenir une lecture ? Quel est-il ? est-il variable ?

Notez que vous n’avez pas besoin du buffer dans votre code, il vaut mieux faire

void lireEtAfficherPoids()
{
  poidsLu = scale.get_units(3);
  if(poidsLu != poidsLuPrev)
  {
    lcd.setCursor(0, 1);
    Lcp.print(F(“SEL=tar|”));
    lcd.print(poidsLu,1);
    poidsLuPrev = poidsLu;
  }
}

Vous pouvez ainsi vous passer de buf_double et gagnez un peu en calcul. Comme vous faites évoluer à l’affichage que 1 chiffre après la virgule, faites la comparaison entre poidsLu et poidsLuPrev que à une décimale de précision (multipliez par 10 et testez en entier), ça affichera sans doute moins souvent

merci je vais essayer

Bonjour

La lecture de la notice technique (DataSheet), à laquelle J-M-L vous invite, montrera que le HX711 a deux vitesses de fonctionnement. (10 mesures par seconde ou 80 mesures par seconde)