Appel fonction par moniteur série

Merci, parfait! J'essaie ce soir, je pense qu'on pourra clôturer cette conversation.
Je risques d'en ouvrir d'autres...:sweat_smile:
Bonne journée


20:35:02.307 -> Nouveau Facteur d'étalonnage: 12840.00
20:35:02.307 -> Facteur enregistré : 
20:35:02.307 -> 12840.00
20:35:02.307 -> Calibration mise à jour
20:35:04.415 -> Température INT : 21.9°C
20:35:04.415 -> Température EXT : 22.1°C
20:35:04.415 -> Humidité EXT : 57.9%
20:35:04.415 -> -1.03 Kg
20:35:04.497 -> 
20:35:06.596 -> Température INT : 21.9°C
20:35:06.596 -> Température EXT : 22.1°C
20:35:06.596 -> Humidité EXT : 57.9%
20:35:06.596 -> -1.01 Kg
20:35:06.677 -> 
20:35:08.779 -> Température INT : 21.9°C
20:35:08.779 -> Température EXT : 22.2°C
20:35:08.824 -> Humidité EXT : 57.9%
20:35:08.824 -> -1.00 Kg
20:35:08.873 ->
20:35:10.999 -> Température INT : 21.9°C
20:35:10.999 -> Température EXT : 22.2°C
20:35:10.999 -> Humidité EXT : 57.9%
20:35:10.999 -> -0.99 Kg
20:35:11.105 -> 
20:35:13.185 -> Température INT : 21.9°C
20:35:13.185 -> Température EXT : 22.2°C
20:35:13.185 -> Humidité EXT : 57.9%
20:35:13.185 -> -1.03 Kg
20:35:13.306 -> 
**20:35:13.306 -> Facteur d'étalonnage: **
**20:35:13.306 -> 12840.00**
**20:35:13.306 -> Nouveau Facteur d'étalonnage: 0.00**
**20:35:13.306 -> Facteur enregistré : **
**20:35:13.306 -> 0.00**
**20:35:13.306 -> Calibration mise à jour**
**

J'ai copié le nouveau code, je tape CALIB12840, tout va bien jusque là, et lorsque je tape CALIB? il me donne mon facteur mais ensuite il se remet à zéro...

Mets le code. On ne sait pas ce que tu as fait, on est pas dans ton PC.

Tu n'as pas inversé le ? en tapant ?CALIB comme t'avais préconisé @fdufnews.
Comme les affichages s'enchaine, je suppose que tu n'a pas non plus suivi mon alternative.

Donc on peut supposer que ton code fait ce que l'on t'a dit dans les précédents méssages et qui corresponds au affichage :frowning:

Si tu mettais une bonne fois pour toutes les informations, c'est à dire le code et l'affichage correspodnant, cela serait plus rapide pour résoudre tes différents soucis :slight_smile:

// Si on demande à lire la calibration
  if (calibRx.startsWith("CALIB?")) { // Pour connaître le facteur actuel de la balance
      Serial.println("Facteur d'étalonnage: ");
      Serial.println(calibration_factor);
  } else if (calibRx.startsWith("CALIB")) { // Taper "CALIB12840" 12840 Facteur initial
     // Si on remplace la calibration par une nouvelle valeur
      calibration_factor = calibRx.substring(5).toFloat();     // On extrait la valeur de la commande "CALIB....." et la transforme en float
      changeCal = true;
  } else if (calibRx.startsWith("+")) { // Si on incrémente la calibration de 10
      calibration_factor += 10; //Augmente l'étalonnage de 10
      changeCal = true;
  } else if (calibRx.startsWith("-")) {
    // Si on décrémente la calibration de 10
    calibration_factor -= 10; //Diminue l'étalonnage de 10
      changeCal = true;
  }

Voici le code que j'ai copié

Et voici le résultat.....

20:35:02.307 -> Nouveau Facteur d'étalonnage: 12840.00
20:35:02.307 -> Facteur enregistré : 
20:35:02.307 -> 12840.00
20:35:02.307 -> Calibration mise à jour
20:35:04.415 -> Température INT : 21.9°C
20:35:04.415 -> Température EXT : 22.1°C
20:35:04.415 -> Humidité EXT : 57.9%
20:35:04.415 -> -1.03 Kg
20:35:04.497 -> 
20:35:06.596 -> Température INT : 21.9°C
20:35:06.596 -> Température EXT : 22.1°C
20:35:06.596 -> Humidité EXT : 57.9%
20:35:06.596 -> -1.01 Kg
20:35:06.677 -> 
20:35:08.779 -> Température INT : 21.9°C
20:35:08.779 -> Température EXT : 22.2°C
20:35:08.824 -> Humidité EXT : 57.9%
20:35:08.824 -> -1.00 Kg
20:35:08.873 ->
20:35:10.999 -> Température INT : 21.9°C
20:35:10.999 -> Température EXT : 22.2°C
20:35:10.999 -> Humidité EXT : 57.9%
20:35:10.999 -> -0.99 Kg
20:35:11.105 -> 
20:35:13.185 -> Température INT : 21.9°C
20:35:13.185 -> Température EXT : 22.2°C
20:35:13.185 -> Humidité EXT : 57.9%
20:35:13.185 -> -1.03 Kg
20:35:13.306 -> 
20:35:13.306 -> Facteur d'étalonnage: 
20:35:13.306 -> 12840.00
20:35:13.306 -> Nouveau Facteur d'étalonnage: 0.00
20:35:13.306 -> Facteur enregistré : 
20:35:13.306 -> 0.00
20:35:13.306 -> Calibration mise à jour

les différentes manip, 1ere CALIB12840, et 2e CALIB?.

J'ai bien fait CALIB?

Ca ne nous donne pas ton code en entier :frowning:

#include <EEPROM.h> // https://docs.arduino.cc/learn/built-in-libraries/eeprom/
#include <DFRobot_SHT20.h>
DFRobot_SHT20 sht20(&Wire, SHT20_I2C_ADDR);
#include <dummy.h>

#include "OneWire.h"
#include "DallasTemperature.h"

OneWire oneWire(13);
DallasTemperature ds(&oneWire);

#include "HX711.h"


#define DOUT  0
#define CLK  4
HX711 scale;

float calibration_factor = 1.0;


void setup() {

  Serial.begin(115200);  // définition de l'ouverture du port série.
  ds.begin();          // sonde interieur activée (T°).
  sht20.initSHT20();        // sonde extérieur activée (T° et Tx humidité).
  pinMode(13, INPUT);  // désignation du port pour la sonde intérieur.
  pinMode(15, INPUT_PULLUP); // désignation du port pour la sonde extérieur.

  EEPROM.get(0, calibration_factor); // Restitution depuis mémoire semi permanente.
  scale.begin(DOUT, CLK);
scale.set_scale(calibration_factor);
  //scale.tare(); //Remettre la balance à 0.
  Serial.println("Calibration Factor: " + String(calibration_factor));;
  Serial.println("Readings:");
}


void loop() {

 // TEMPERATURE INTERIEURE ET EXTERIEURE

{
  ds.requestTemperatures();
  float temperatureInt = ds.getTempCByIndex(0);

  float temp = sht20.readTemperature();

  float humd = sht20.readHumidity();


  Serial.print("Température INT : " );

  Serial.print(temperatureInt, 1);   // Seulement une décimale
  Serial.println("°C");

  Serial.print("Température EXT : ");
  Serial.print(temp, 1);   // Seulement une décimale
  Serial.println("°C");
  Serial.print("Humidité EXT : ");
  Serial.print(humd, 1);   // Seulement une décimale
  Serial.print("%");
  Serial.println();
  Serial.println("");


Serial.print(scale.get_units(), 1); scale.get_units() returns a float
 Serial.print(" Kg"); 

 }

  
// PARTIE BALANCE
  if (Serial.available())
  {
    commandeRecue();
  }
  
}

void commandeRecue()
{
    String calibRx = Serial.readStringUntil('\n');     // Mettre au moins nouvelle ligne dans le moniteur.
    calibRx.trim();     // Nettoyage des 2 bouts de la chaîne https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/trim/
    calibRx.replace(" ", "");     // Supprimer les espaces
    calibRx.replace(",", ".");     // Remplacer la virgule par le point
    calibRx.toUpperCase();     // En majuscules
    boolean changeCal = false;
  
    // Si on demande à lire la calibration
  if (calibRx.startsWith("CALIB?")) { // Pour connaître le facteur actuel de la balance
      Serial.println("Facteur d'étalonnage: ");
      Serial.println(calibration_factor);
  } else if (calibRx.startsWith("CALIB")) { // Taper "CALIB12840" 12840 Facteur initial
     // Si on remplace la calibration par une nouvelle valeur
      calibration_factor = calibRx.substring(5).toFloat();     // On extrait la valeur de la commande "CALIB....." et la transforme en float
      changeCal = true;
  } else if (calibRx.startsWith("+")) { // Si on incrémente la calibration de 10
      calibration_factor += 10; //Augmente l'étalonnage de 10
      changeCal = true;
  } else if (calibRx.startsWith("-")) {
    // Si on décrémente la calibration de 10
    calibration_factor -= 10; //Diminue l'étalonnage de 10
      changeCal = true;
  }

Le code est incomplet

  • ctrl + a pour sélectionner tout le code
  • ctrl + c pour le copier
  • ctrl + v pour le coller dans le message

comme ça il n'y a pas de risque perdre des lignes.

Le code présenté ne compile pas, tu es sûre que c'est celui que tu as téléversé ?

Je ne suis pas chez moi, j'essaie tout à l'heure ! En copiant direct. Je l'ai pris sur les dernières conversations car j'ai rien changé pourtant...

Peut être mais ce code ne peut pas générer un binaire.
Donc ça ne peut pas être ce code que tu exécute sur ton Arduino.

Serial.print(scale.get_units(), 1); scale.get_units() returns a float

Il manque les dernières lignes et comme dans cette partie que doit se cacher le problème....

#include <EEPROM.h> // https://docs.arduino.cc/learn/built-in-libraries/eeprom/
#include <DFRobot_SHT20.h>
DFRobot_SHT20 sht20(&Wire, SHT20_I2C_ADDR);
#include <dummy.h>

#include "OneWire.h"
#include "DallasTemperature.h"

OneWire oneWire(13);
DallasTemperature ds(&oneWire);

#include "HX711.h"


#define DOUT  0
#define CLK  4
HX711 scale;

float calibration_factor = 12840.0; //12840 Facteur initial


void setup() {

  Serial.begin(115200);  // définition de l'ouverture du port série.
  ds.begin();          // sonde interieur activée (T°).
  sht20.initSHT20();        // sonde extérieur activée (T° et Tx humidité).
  pinMode(13, INPUT);  // désignation du port pour la sonde intérieur.
  pinMode(15, INPUT_PULLUP); // désignation du port pour la sonde extérieur.

  EEPROM.get(0, calibration_factor); // Restitution depuis mémoire semi permanente.
  scale.begin(DOUT, CLK);
scale.set_scale(calibration_factor);
  scale.tare(); //Remettre la balance à 0.
  Serial.println("Calibration Factor: " + String(calibration_factor));;
  Serial.println("Readings:");
}


void loop() {

  // TEMPERATURE INTERIEURE ET EXTERIEURE de la ruche

  {
    ds.requestTemperatures();
    float temperatureInt = ds.getTempCByIndex(0);

    float temp = sht20.readTemperature();

    float humd = sht20.readHumidity();

    Serial.println("RUCHE N°1");

    Serial.print("Température INT : " );

    Serial.print(temperatureInt, 1);   // Seulement une décimale
    Serial.println("°C");

    Serial.print("Température EXT : ");
    Serial.print(temp, 1);   // Seulement une décimale
    Serial.println("°C");
    Serial.print("Humidité EXT : ");
    Serial.print(humd, 1);   // Seulement une décimale
    Serial.println("%");
Serial.print(scale.get_units(), 2); //Renvoie une décimale
    Serial.print(" Kg");
    delay (100);
    Serial.println("");
    Serial.println("");
  }


  // PARTIE BALANCE pour ETALONNER
  if (Serial.available())
  {
    commandeRecue();
  }
}
void commandeRecue()
{
String calibRx = Serial.readStringUntil('\n');     // Mettre au moins nouvelle ligne dans le moniteur.
  calibRx.trim();     // Nettoyage des 2 bouts de la chaîne https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/trim/
  calibRx.replace(" ", "");     // Supprimer les espaces
  calibRx.replace(",", ".");     // Remplacer la virgule par le point
  calibRx.toUpperCase();     // En majuscules
  boolean changeCal = false;

  // Si on demande à lire la calibration
if (calibRx.startsWith("CALIB?")) { // Pour connaître le facteur actuel de la balance
      Serial.println("Facteur d'étalonnage: ");
Serial.println(calibration_factor);
  } else if (calibRx.startsWith("CALIB")) { // Taper "CALIB12840" 12840 Facteur initial
     // Si on remplace la calibration par une nouvelle valeur
calibration_factor = calibRx.substring(5).toFloat();     // On extrait la valeur de la commande "CALIB....." et la transforme en float
      changeCal = true;
  } else if (calibRx.startsWith("+")) { // Si on incrémente la calibration de 10
      calibration_factor += 10; //Augmente l'étalonnage de 10
      changeCal = true;
  } else if (calibRx.startsWith("-")) {
    // Si on décrémente la calibration de 10
    calibration_factor -= 10; //Diminue l'étalonnage de 10
      changeCal = true;
  }
}


Le code que tu viens de poster n'est pas celui qui produit la sortie suivante comme l'indique @fdufnews :

20:35:02.307 -> Nouveau Facteur d'étalonnage: 12840.00
20:35:02.307 -> Facteur enregistré : 
20:35:02.307 -> 12840.00
#include <EEPROM.h> // https://docs.arduino.cc/learn/built-in-libraries/eeprom/
#include <DFRobot_SHT20.h>
DFRobot_SHT20 sht20(&Wire, SHT20_I2C_ADDR);
#include <dummy.h>

#include "OneWire.h"
#include "DallasTemperature.h"

OneWire oneWire(13);
DallasTemperature ds(&oneWire);

#include "HX711.h"


#define DOUT  0
#define CLK  4
HX711 scale;

float calibration_factor = 0.0; //12840 Facteur initial


void setup() {

  Serial.begin(115200);  // définition de l'ouverture du port série.

  ds.begin();          // sonde interieur activée (T°).
  sht20.initSHT20();        // sonde extérieur activée (T° et Tx humidité).
  pinMode(13, INPUT);  // désignation du port pour la sonde intérieur.
  pinMode(15, INPUT_PULLUP); // désignation du port pour la sonde extérieur.

  EEPROM.get(0, calibration_factor); // Restitution depuis mémoire semi permanente.
  scale.begin(DOUT, CLK);
scale.set_scale(calibration_factor);
  scale.tare(); //Remettre la balance à 0.
  Serial.println("Calibration Factor: " + String(calibration_factor));;
  Serial.println("Readings:");
}


void loop() {

  // TEMPERATURE INTERIEURE ET EXTERIEURE de la ruche

  {
    ds.requestTemperatures();
    float temperatureInt = ds.getTempCByIndex(0);

    float temp = sht20.readTemperature();

    float humd = sht20.readHumidity();

    Serial.println("RUCHE N°1");

    Serial.print("Température INT : " );

    Serial.print(temperatureInt, 1);   // Seulement une décimale
    Serial.println("°C");

    Serial.print("Température EXT : ");
    Serial.print(temp, 1);   // Seulement une décimale
    Serial.println("°C");
    Serial.print("Humidité EXT : ");
    Serial.print(humd, 1);   // Seulement une décimale
    Serial.println("%");
Serial.print(scale.get_units(), 2); //Renvoie une décimale
    Serial.print(" Kg");
    delay (100);
    Serial.println("");
    Serial.println("");
  }


  // PARTIE BALANCE pour ETALONNER
  if (Serial.available())
  {
    commandeRecue();
  }
}
void commandeRecue()
{
String calibRx = Serial.readStringUntil('\n');     // Mettre au moins nouvelle ligne dans le moniteur.
  calibRx.trim();     // Nettoyage des 2 bouts de la chaîne https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/trim/
  calibRx.replace(" ", "");     // Supprimer les espaces
  calibRx.replace(",", ".");     // Remplacer la virgule par le point
  calibRx.toUpperCase();     // En majuscules
  boolean changeCal = false;

  // Si on demande à lire la calibration
if (calibRx.startsWith("CALIB?")) { // Pour connaître le facteur actuel de la balance
      Serial.println("Facteur d'étalonnage: ");
Serial.println(calibration_factor);
  } else if (calibRx.startsWith("CALIB")) { // Taper "CALIB12840" 12840 Facteur initial
     // Si on remplace la calibration par une nouvelle valeur
calibration_factor = calibRx.substring(5).toFloat();     // On extrait la valeur de la commande "CALIB....." et la transforme en float
      changeCal = true;
  } else if (calibRx.startsWith("+")) { // Si on incrémente la calibration de 10
      calibration_factor += 10; //Augmente l'étalonnage de 10
      changeCal = true;
  } else if (calibRx.startsWith("-")) {
    // Si on décrémente la calibration de 10
    calibration_factor -= 10; //Diminue l'étalonnage de 10
      changeCal = true;
  }

    // Si on a changé la calibration alors on sauve la valeur en EEPROM
    //  et on prend la modification en compte
    if(changeCal)
    {
Serial.print("Nouveau Facteur d'étalonnage: "); Serial.println(calibration_factor);
        EEPROM.put(0, calibration_factor);     // Sauvegarde en mémoire semi permanente. https://wiki-content.arduino.cc/en/Tutorial/
Serial.println("Facteur enregistré : "); Serial.println(calibration_factor);
scale.set_scale(calibration_factor);
        Serial.println("Calibration mise à jour");
        changeCal = false;
    }
}


Voilà, c'est ce code hier, j'avais enregistré sur 2 fichiers ou voir les essais.
Par contre, maintenant c'est ok CALIB?, mais ça n'enregistre pas . J'ai essayé de débrancher et rebrancher l'USB. Je reviens au facteur 0.
Dsl pour la mauvaise manip

Il me semble que ce code doit fonctionner correctement.
Ce n'est pas celui qui t'a servi à générer la sortie d'écran que tu as donné au #126.




18:33:18.042 -> Température INT : 21.4°C
18:33:18.042 -> Température EXT : 21.4°C
18:33:18.042 -> Humidité EXT : 62.1%
18:33:18.042 -> inf Kg
18:33:18.136 -> 
18:33:20.244 -> Température INT : 21.3°C
18:33:20.244 -> Température EXT : 21.4°C
18:33:20.244 -> Humidité EXT : 62.1%
18:33:20.244 -> inf Kg
18:33:20.338 -> 
18:33:22.447 -> Température INT : 21.3°C
18:33:22.447 -> Température EXT : 21.4°C
18:33:22.447 -> Humidité EXT : 62.1%
18:33:22.447 -> inf Kg
18:33:22.541 -> 
18:33:24.650 -> Température INT : 21.3°C
18:33:24.650 -> Température EXT : 21.4°C
18:33:24.650 -> Humidité EXT : 62.1%
18:33:24.650 -> inf Kg
18:33:24.743 -> 
18:33:26.852 -> Température INT : 21.4°C
18:33:26.852 -> Température EXT : 21.4°C
18:33:26.852 -> Humidité EXT : 62.1%
18:33:26.852 -> inf Kg
18:33:26.946 -> 
18:33:26.946 -> Nouveau Facteur d'étalonnage: 12840.00
18:33:26.946 -> Facteur enregistré : 
18:33:26.946 -> 12840.00
18:33:26.946 -> Calibration mise à jour
18:33:29.055 -> Température INT : 21.4°C
18:33:29.055 -> Température EXT : 21.4°C
18:33:29.055 -> Humidité EXT : 62.1%
18:33:29.055 -> 0,1 Kg
18:33:29.149 -> 
18:33:31.257 -> Température INT : 21.3°C
18:33:31.257 -> Température EXT : 21.4°C
18:33:31.257 -> Humidité EXT : 62.1%
18:33:31.257 -> 0,1 Kg
18:33:31.351 -> 
18:33:33.460 -> Température INT : 21.3°C
18:33:33.460 -> Température EXT : 21.4°C
18:33:33.460 -> Humidité EXT : 62.1%
18:33:33.460 -> 0,1 Kg
18:33:33.554 -> 
18:33:35.663 -> Température INT : 21.4°C
18:33:35.663 -> Température EXT : 21.4°C
18:33:35.663 -> Humidité EXT : 62.1%
18:33:35.663 -> -1.12 Kg
18:33:35.756 -> 
18:33:37.818 -> Température INT : 21.3°C
18:33:37.865 -> Température EXT : 21.4°C
18:33:37.865 -> Humidité EXT : 62.1%
18:33:37.865 -> 0,1 Kg
18:33:37.959 -> 
18:33:40.021 -> Température INT : 21.4°C
18:33:40.068 -> Température EXT : 21.4°C
18:33:40.068 -> Humidité EXT : 62.1%
18:33:40.068 -> 0,1 Kg
18:33:40.162 -> 
18:33:42.224 -> Température INT : 21.4°C
18:33:42.270 -> Température EXT : 21.4°C
18:33:42.270 -> Humidité EXT : 62.1%
18:33:42.270 -> 0,1 Kg
18:33:42.364 -> 
18:33:44.426 -> Température INT : 21.4°C
18:33:44.473 -> Température EXT : 21.4°C
18:33:44.473 -> Humidité EXT : 62.1%
18:33:44.473 -> 0,1 Kg
18:33:44.567 -> 
18:33:46.488 -> ets Jul 29 2019 12:21:46
18:33:46.488 -> 
18:33:46.488 -> rst:0x1 (POWERON_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
18:33:46.488 -> configsip: 0, SPIWP:0xee
18:33:46.488 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
18:33:46.535 -> mode:DIO, clock div:1
18:33:46.535 -> load:0x3fff0030,len:1344
18:33:46.535 -> load:0x40078000,len:13964
18:33:46.535 -> load:0x40080400,len:3600
18:33:46.535 -> entry 0x400805f0
18:33:48.035 -> Calibration Factor: 0.00
18:33:48.035 -> Readings:
18:33:50.144 -> Température INT : 21.3°C
18:33:50.144 -> Température EXT : 21.4°C
18:33:50.144 -> Humidité EXT : 62.1%
18:33:50.144 -> inf Kg


Voilà les résultats, je l'ai rebooté et le facteur est à 0...

hello
dans le code que tu donnes, DOUT est déclaré en pin 0 !!!
comme tu utilises le serial... tu n'as pas le droit de l'utiliser pour la balance.

mais il semble que ton affichage est correct, alors le code que tu nous donnes ne doit pas etre le bon.

chez moi
j'utilise ce code ( c'est le tiens mais modifié car je n'ai que la balance)

#include <EEPROM.h> // https://docs.arduino.cc/learn/built-in-libraries/eeprom/
#include <DFRobot_SHT20.h>

DFRobot_SHT20 sht20(&Wire, SHT20_I2C_ADDR);

#include <dummy.h>

#include "OneWire.h"
#include "DallasTemperature.h"

OneWire oneWire(13);
DallasTemperature ds(&oneWire);

#include "HX711.h"

//#define DOUT  0  // erreur, 0 et 1 sont utilisé par le Serial
#define DOUT  3
#define CLK  4
HX711 scale;

float calibration_factor = 0.0; //12840 Facteur initial


void setup() {

  Serial.begin(115200);  // définition de l'ouverture du port série.

  //ds.begin();          // sonde interieur activée (T°).
  //sht20.initSHT20();        // sonde extérieur activée (T° et Tx humidité).
  pinMode(13, INPUT);  // désignation du port pour la sonde intérieur.
  pinMode(15, INPUT_PULLUP); // désignation du port pour la sonde extérieur.

  EEPROM.get(0, calibration_factor); // Restitution depuis mémoire semi permanente.
  scale.begin(DOUT, CLK);

  scale.set_scale(calibration_factor);
  scale.tare(); //Remettre la balance à 0.
  Serial.println("Calibration Factor: " + String(calibration_factor));;
  Serial.println("Readings:");
}


void loop() {

  // TEMPERATURE INTERIEURE ET EXTERIEURE de la ruche

  {
    // ds.requestTemperatures();
    //  float temperatureInt = ds.getTempCByIndex(0);

    //  float temp = sht20.readTemperature();

    //  float humd = sht20.readHumidity();
/*
    Serial.println("RUCHE N°1");

    Serial.print("Température INT : " );

  //  Serial.print(temperatureInt, 1);   // Seulement une décimale
    Serial.println("°C");

    Serial.print("Température EXT : ");
 //   Serial.print(temp, 1);   // Seulement une décimale
    Serial.println("°C");
    Serial.print("Humidité EXT : ");
 //   Serial.print(humd, 1);   // Seulement une décimale
    Serial.println("%");
*/
    Serial.print(scale.get_units(), 2); //Renvoie une décimale
    Serial.print(" Kg");
    delay (100);
    Serial.println("");
    Serial.println("");
  }


  // PARTIE BALANCE pour ETALONNER
  if (Serial.available())
  {
    commandeRecue();
  }
}
void commandeRecue()
{
  String calibRx = Serial.readStringUntil('\n');     // Mettre au moins nouvelle ligne dans le moniteur.
  calibRx.trim();     // Nettoyage des 2 bouts de la chaîne https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/trim/
  calibRx.replace(" ", "");     // Supprimer les espaces
  calibRx.replace(",", ".");     // Remplacer la virgule par le point
  calibRx.toUpperCase();     // En majuscules
  boolean changeCal = false;

  // Si on demande à lire la calibration
  if (calibRx.startsWith("CALIB?"))
  { // Pour connaître le facteur actuel de la balance
    Serial.println("Facteur d'étalonnage: ");
    Serial.println(calibration_factor);
  } else
  {
    if (calibRx.startsWith("CALIB"))
    { // Taper "CALIB12840" 12840 Facteur initial
      // Si on remplace la calibration par une nouvelle valeur
      calibration_factor = calibRx.substring(5).toFloat();     // On extrait la valeur de la commande "CALIB....." et la transforme en float
      changeCal = true;
    } else
    {
      if (calibRx.startsWith("+"))
      { // Si on incrémente la calibration de 10
        calibration_factor += 10; //Augmente l'étalonnage de 10
        changeCal = true;
      } else {
        if (calibRx.startsWith("-"))

        {
          // Si on décrémente la calibration de 10
          calibration_factor -= 10; //Diminue l'étalonnage de 10
          changeCal = true;
        }
      }
    }
  }
  // Si on a changé la calibration alors on sauve la valeur en EEPROM
  //  et on prend la modification en compte
  if (changeCal)
  {
    Serial.print("Nouveau Facteur d'étalonnage: "); Serial.println(calibration_factor);
    EEPROM.put(0, calibration_factor);     // Sauvegarde en mémoire semi permanente. https://wiki-content.arduino.cc/en/Tutorial/
    Serial.println("Facteur enregistré : "); Serial.println(calibration_factor);
    scale.set_scale(calibration_factor);
    Serial.println("Calibration mise à jour");
    changeCal = false;
  }
}

j'obtiens ceci :
image

avec une grosse pile ronde poids 133.00gr

pour trouver la valeur de calibration, j'ai d'abord utilisé un prog d'exemple de la librairie HX711_ADC
ce prog a pour titre "calibration"

Ce n'est toujours pas la sortie correspond au programme du #136 :sob:
il n'y a pas marque "RUCHE N°1"
Si tu peux aussi formater ton code qui pique les yeux :smiley:, avec un Ctr+T

Comment procéde tu execatement ?
as tu ouvert ton IDE Arduino avec ton fichier que tu as copier coller ici, téléversé le programme, fait la manipulation que t'a indiqué @fdufnews , puis copier/coller la sortie du moniteur série ?

On est en post #136 et cela fait bien au moins 10 post, que l'on te dit que ton programme ne correpsond pas à ta sortie du moniteur série, alors que ton programme est plutot simple :frowning:

Je suis dsl, mais depuis le début je dois passer par mon smartphone, car sur le pc impossible de se connecter, donc je vous passe des détails, je dois faire des copies et le les envoyer par mail.

Ensuite Ruche N1, je l'avais mis // parce que pour le moment c'est pas le plus important! :slightly_smiling_face: