refactor: improve auto tare logic and reset conditions in scale handling
This commit is contained in:
11
src/main.cpp
11
src/main.cpp
@@ -197,17 +197,6 @@ void loop() {
|
||||
{
|
||||
lastWeightReadTime = currentMillis;
|
||||
|
||||
// Prüfen ob die Waage korrekt genullt ist
|
||||
// Abweichung von 2g ignorieren
|
||||
if (autoTare && (weight > 2 && weight < 7) || weight < -2)
|
||||
{
|
||||
scale_tare_counter++;
|
||||
}
|
||||
else
|
||||
{
|
||||
scale_tare_counter = 0;
|
||||
}
|
||||
|
||||
// Prüfen ob das Gewicht gleich bleibt und dann senden
|
||||
if (abs(weight - lastWeight) <= 2 && weight > 5)
|
||||
{
|
||||
|
@@ -161,20 +161,21 @@ void scale_loop(void * parameter) {
|
||||
|
||||
// Only measure at defined intervals to reduce noise
|
||||
if (currentTime - lastMeasurementTime >= MEASUREMENT_INTERVAL_MS) {
|
||||
// Prüfen ob die Waage korrekt genullt ist
|
||||
// Abweichung von 2g ignorieren
|
||||
if (autoTare && (weight > 2 && weight < 7) || weight < -2)
|
||||
{
|
||||
scale_tare_counter++;
|
||||
}
|
||||
else
|
||||
{
|
||||
scale_tare_counter = 0;
|
||||
}
|
||||
|
||||
if (scale.is_ready())
|
||||
{
|
||||
// Waage automatisch Taren, wenn zu lange Abweichung
|
||||
if (autoTare && scale_tare_counter >= 5)
|
||||
{
|
||||
Serial.println("Auto Tare scale");
|
||||
//scale.tare();
|
||||
//resetWeightFilter(); // Reset filter after auto tare
|
||||
scaleTareRequest = true;
|
||||
scale_tare_counter = 0;
|
||||
}
|
||||
|
||||
// Waage manuell Taren
|
||||
if (scaleTareRequest == true)
|
||||
if (scaleTareRequest == true || (autoTare && scale_tare_counter >= 5))
|
||||
{
|
||||
Serial.println("Re-Tare scale");
|
||||
oledShowMessage("TARE Scale");
|
||||
@@ -184,6 +185,8 @@ void scale_loop(void * parameter) {
|
||||
vTaskDelay(pdMS_TO_TICKS(1000));
|
||||
oledShowWeight(0);
|
||||
scaleTareRequest = false;
|
||||
scale_tare_counter = 0;
|
||||
weight = 0; // Reset global weight variable after tare
|
||||
}
|
||||
|
||||
// Get raw weight reading
|
||||
|
Reference in New Issue
Block a user