appeler des programmes Arduino dans un autre programme arduino

Bonjour, a l'aide de quatre capteurs de masse (czl635 - 20) et de quatre amplificateurs de tension (hx711), je dois mesurer le poids d'une ruche. Je voudrais donc afficher la valeurs totale des quatre capteurs dans le moniteur série.

Les capteurs de masses ressortes 4 fils, Un pour le GND, Un pour le +5V, une pour le clock et un pour la tension mesuré (de 0 à 15 mV). Pour amplifier cette tension j'utilise donc des hx711.

J'arrive parfaitement a récupérer les valeurs pour un capteurs grace a ce programme :

/*
 * circuits4you.com
 * 2016 November 25
 * Load Cell HX711 Module Interface with Arduino to measure weight in Kgs
 Arduino 
 pin 
 2 -> HX711 CLK
 3 -> DOUT
 5V -> VCC
 GND -> GND

 Most any pin on the Arduino Uno will be compatible with DOUT/CLK.
 The HX711 board can be powered from 2.7V to 5V so the Arduino 5V power should be fine.
*/

#include "HX711.h"  //You must have this library in your arduino library folder

#define DOUT 3
#define CLK  2



HX711 scale(DOUT, CLK);


//Change this calibration factor as per your load cell once it is found you many need to vary it in thousands
float calibration_factor = -114700; //-106600 worked for my 40Kg max scale setup 

//=============================================================================================
//                         SETUP
//=============================================================================================
void setup() {
  Serial.begin(9600);  
  Serial.println("Press T to tare");
  scale.set_scale(-114700);  //Calibration Factor obtained from first sketch
  scale.tare();             //Reset the scale to 0  
}

//=============================================================================================
//                         LOOP
//=============================================================================================
void loop() {
  Serial.print("Poids: ");
  Serial.print(scale.get_units(), 3);  //Up to 3 decimal points
  Serial.println(" kg"); //Change this to kg and re-adjust the calibration factor if you follow lbs
  
  if(Serial.available())
  {
    char temp = Serial.read();
    if(temp == 't' || temp == 'T')
      scale.tare();  //Reset the scale to zero 
   
  }
       delay(1000);

}
//=============================================================================================

Ce programme utilise cette bibliothèque : HX711-master.zip

J'avais penser, faire quatre petits programmes pour les quatre capteurs puis un autre appelant les quatre pour les additionner et donc les afficher dans le moniteurs séries.

Débutant dans Arduino pouvez vous m'aidez ? Avez vous une autre proposition ? Ci vous avez das questions n’hésitez pas.

Cordialement,

Fabien

Il faut bosser un peu la partie programmation

Comprenez vous cette partie du code et ce qu'est la variable scale?

#include "HX711.h"  //You must have this library in your arduino library folder

#define DOUT 3
#define CLK  2
HX711 scale(DOUT, CLK);

J-M-L: Il faut bosser un peu la partie programmation

Comprenez vous cette partie du code et ce qu'est la variable scale?

#include "HX711.h"  //You must have this library in your arduino library folder

define DOUT 3

define CLK  2

HX711 scale(DOUT, CLK);


Bonjour J-M-P,

Je suis presque incapable de vous expliquer ce programme (pris sur internet) ca je suis totalement débutant. Je vous remercie d'avoir prix du temps pour chercher mon problème.

Fabien

pepe:
Bonsoir

Il est tout-à-fait possible de brancher plusieurs modules HX711 sur plusieurs paires d’entrées, en créant un objet de classe HX711 pour chacun. On devrait même pouvoir ranger ces objets dans un tableau afin de faire les mêmes traitements sur les quatre modules successivement. Par exemple :

const uint8_t pinsDOUT[] = {2, 4, 6, 8};

const uint8_t pinsCLK = {3, 5, 7, 9};
const int32_t scales = {-114700,-114700,-114700,-114700};

#include “HX711.h”

HX711 modules[4];

void setup() {
  Serial.begin(9600);
  Serial.println(“Press T to tare”);

uint8_t i;
  for (i=0; i<4; i++) {
    modules[i].begin(pinsDOUT[i], pinsCLK[i]);
    modules[i].set_scale(scales[i]);
    modules[i].tare();
  }
}

void loop() {
  float total = 0.0;
  uint8_t i;
  for (i=0; i<4; i++) {
    float poids = modules[i].get_units();
    total += poids;
    Serial.print(“Poids “);
    Serial.print(i);
    Serial.print(” : “);
    Serial.print(poids, 3);
    Serial.println(” kg”);
  }
  Serial.print(“Poids total : “);
  Serial.print(total, 3);
  Serial.println(” kg”);

if (Serial.available()) {
    char temp = Serial.read();
    if (temp==‘t’ || temp==‘T’) {
      for (i=0; i<4; i++)
        modules[i].tare();
    }
  }
  delay(1000);
}


<sub>(Code écrit sur un coin de table, non testé)</sub>

.

Bonjour,

Tout d’abord, je vous remercie d’avoir pris du temps pour essayé de résoudre mon problème.

Je ne peux pas tester votre programme aujourd’hui car je n’est aucun équipements chez moi, je pourrai le tester seulement lundi.

Pensez-vous que le programme sera fonctionnel ?

Et je vois que vous avez laisser la tare, une fois le programme téléversé, comment ferais-je pour tarer les capteurs?

Et je voulais savoir ci il était possible de rajouter un petit interrupteur sur la carte pour faire la tare ?

Cordialement,

Fabien

Dans le cas ou le programme marcherai, serais t-il possible que vous me fassiez un programme qui permettrais de tarer grâce a un bouton poussoir ?

Et qu'est ce que l'offset ?

Je vous remercie du temps que vous me consacrez,

Fabien

Et qu'est ce que l'offset ?

En français : une translation, un décalage.

68tjs: En français : une translation, un décalage.

D'accord merci