63 lines
1.5 KiB
C++
63 lines
1.5 KiB
C++
|
#include "../include/Balance.h"
|
||
|
|
||
|
Balance::Balance(int doutPin, int sckPin) {
|
||
|
|
||
|
scale.begin(doutPin, sckPin);
|
||
|
this->initialized = false;
|
||
|
scale.set_scale();
|
||
|
scale.tare();
|
||
|
this->initialVal = 0;
|
||
|
this->calibrationFact = 0;
|
||
|
}
|
||
|
|
||
|
boolean Balance::initCalibration() {
|
||
|
|
||
|
scale.set_scale();
|
||
|
scale.tare();
|
||
|
this->initialVal = scale.read_average(20);
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
boolean Balance::calibration(int poidsRef,int moyenne_calibration) {
|
||
|
|
||
|
int rawValref = 0; // Valeur brute de plexiglas et poids réf
|
||
|
int tempPoids = 0; // C'est la valeur du poids en grammes calculée grâce au facteur de calibration
|
||
|
|
||
|
rawValref = scale.read_average(moyenne_calibration);
|
||
|
this->calibrationFact = (rawValref - this->initialVal) / poidsRef;
|
||
|
do {
|
||
|
scale.set_scale(calibrationFact);
|
||
|
tempPoids = scale.get_units(5);
|
||
|
if (tempPoids < poidsRef) {
|
||
|
calibrationFact -= 1;
|
||
|
} else if (tempPoids > poidsRef) {
|
||
|
calibrationFact += 1;
|
||
|
}
|
||
|
} while (tempPoids != poidsRef);
|
||
|
return initialized = true;
|
||
|
}
|
||
|
|
||
|
double Balance::getAverage(int nbMesure) {
|
||
|
|
||
|
if (initialized == true) {
|
||
|
return scale.get_units(nbMesure);
|
||
|
} else {
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
double Balance::getValue() {
|
||
|
|
||
|
if (initialized == true) {
|
||
|
return scale.get_units();
|
||
|
} else {
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Balance::setCalibrationFact(int caliFact){
|
||
|
this->initialized = true;
|
||
|
this->calibrationFact = caliFact;
|
||
|
scale.set_scale(caliFact);
|
||
|
}
|