Merci, parfait! J'essaie ce soir, je pense qu'on pourra clôturer cette conversation.
Je risques d'en ouvrir d'autres...![]()
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 ![]()
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 ![]()
// 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 ![]()
#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 :

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 ![]()
il n'y a pas marque "RUCHE N°1"
Si tu peux aussi formater ton code qui pique les yeux
, 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 ![]()
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! ![]()

