Fonction avec parametre Objet

Bonjour, j'aimerais passer des capteurs differents HX_1 & HX_2 comme parametre d'une fonction:


#include <Lib_HX711.h>
Lib_HX711 HX_1(A3, A2, HX_GAIN128_A); // (Data, Clk, Gain_Canal
Lib_HX711 HX_2(6, 5, HX_GAIN128_A); // Avec Select HIGH
#define Decal_Capt_1 4.055
#define Coef_Capt_1 21126.0
#define Decal_Capt_2 3.088
#define Coef_Capt_2 22530.0

float Poids_1 = 0.0;
float Poids_2 = 0.0;
   
float Pesage(char Capt[],float Coef, float Decal){
  HX_1.sleepMode(false); // Reveil Capteur Poids
  delay(500);
  long Lecture = 0;
  float Poids = 0.0;   
  for ( byte i = 0; i < 5; i++){ // Moyenne sur 5 lectures   
    if (Capt.available()) {
      Lecture = Capt.read();
      Poids += ((Lecture / Coef) + Decal);
      delay(120);         
    }
    else{i--;} // Decomptage pour moyenne si lecture pas dispo    
  }
  Poids /= -5;
  HX_1.sleepMode(true); // Mise en sommeil Capteur Poids
  return Poids;  
}

void setup() {
  Serial.begin(115200);
}

void loop() {
  Poids_1 = Pesage("HX_1",Coef_Capt_1,Decal_Capt_1);
  Serial.print ("Poids_1:");
  Serial.print (Poids_1);
  Serial.println ("Unite");
  delay(500);
  
  Poids_2 = Pesage("HX_2",Coef_Capt_2,Decal_Capt_2);
  Serial.println ("Poids_2:");
  Serial.print (Poids_2);
  Serial.println ("Unite");
  delay(500);
}

Le code ci dessus n'est pas accepté a la compilation.
Pourriez vous m'aider s'il vous plait ?

Denis

Bonjour,

Il suffit de passer les objets par référence

float Pesage(Lib_HX711 &Capt,float Coef, float Decal){
  Capt.sleepMode(false); // Reveil Capteur Poids
  delay(500);
  long Lecture = 0;
  float Poids = 0.0;   
  for ( byte i = 0; i < 5; i++){ // Moyenne sur 5 lectures   
    if (Capt.available()) {
      Lecture = Capt.read();
      Poids += ((Lecture / Coef) + Decal);
      delay(120);         
    }
    else{i--;} // Decomptage pour moyenne si lecture pas dispo    
  }
  Poids /= -5;
  Capt.sleepMode(true); // Mise en sommeil Capteur Poids
  return Poids;  
}

Pour l'appel:
Poids_1 = Pesage(HX_1,Coef_Capt_1,Decal_Capt_1);

Pourquoi ici Poids /= -5; tu divises par -5 et non 5?

Ou est ce que tu as trouvé ta librarie Lib_HX711? Lib_HX711 c'est vraiment un nom bizarre pour la classe qui gère le HX_711.

Merci beaucoup Kamill,

ça fonctionne super !

Ça me fait avancer dans l'utilisation des pointeurs et des objets .

Je divise par -5 là pour changer le resultats sans modifier le cablage.

Lib_HX711 est une modification de GyverHX711 avec traitement des resultats negatifs.

Cordialement

Denis

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.