diff --git a/kugelmuehle.ino b/kugelmuehle.ino index ac1dced..398afb7 100644 --- a/kugelmuehle.ino +++ b/kugelmuehle.ino @@ -212,7 +212,7 @@ int getTempInC(uint8_t senTemp){ } int getFilteredTemp(int rawSensorPin) { - constexpr uint8_t FILTER_SAMPLES = 10; // Puffergröße (10 Messwerte) + constexpr uint8_t FILTER_SAMPLES = 100; // Puffergröße (100 Messwerte) Mittelwert über 10s static int readings[FILTER_SAMPLES]; static uint8_t readIndex = 0; static int32_t total = 0; @@ -417,6 +417,22 @@ if (settings.editAcc) { } } +// Prüft ob der Motor zu heiß wird. +// return: true wenn zu heiß +// false wenn unter der Grenze +bool checkOverHeat(int sensorPin){ + curTemp = getFilteredTemp(sensorPin); + + if (curTemp >= settings.maxTemp) { + return true; + } else if (curTemp <= settings.coldTemp) { + return false; + } +} + +// ################## TODO ######################### +// Betriebsmodi in funktions auslagern + void printStatus(FastAccelStepper *stepper, int speed, int clickPlus, int clickMinus){ // Plotter-Ausgabe alle 50 ms (überflutet den Bus nicht) if (millis() - lastPlotTime >= 50) { @@ -451,17 +467,6 @@ void loop() { // 1. Eingaben & Sensoren lesen getInputs(clickPlus, clickMinus, clickStop, holdPlus, holdMinus, holdStop); - curTemp = getFilteredTemp(senTemp); - - // 2. Discord Überhitzungs-Alarm - static bool send = false; - if (curTemp >= settings.maxTemp && !send) { - String message = "⚠️ **Kugelmuehle ueberhitzt!** Aktuelle Temp: " + String(curTemp) + " °C"; - sendDiscordNotification(message); - send = true; - } else if (curTemp < settings.coldTemp) { - send = false; - } // 3. Zeitschaltuhr & NTP prüfen int curH, curM, curS; @@ -474,40 +479,20 @@ void loop() { } // 4. Schutz-Verriegelung (Überhitzung) - //static bool tempOverheat = false; - //if (curTemp >= settings.maxTemp) { - // tempOverheat = true; - //Serial.print("OverHeat ON"); - //Serial.println(); - //} else if (curTemp <= settings.coldTemp) { - // if(tempOverheat){ - // Serial.print("OverHeat OFF"); - // Serial.println(); - //} - //tempOverheat = false; - //} - - // TEST BLOCK Filter logik gegeg STörunegn ############################ - static bool tempOverheat = false; - static int32_t overheatCounter = 0; - - if (curTemp >= settings.maxTemp && curTemp <= settings.maxTemp + 5) { - overheatCounter++; - } else{ - overheatCounter = 0; + static bool tempOverheat; + tempOverheat = checkOverHeat(senTemp); + ///######################################### TODO + // Discord Überhitzungs-Alarm + static bool send = false; + if (tempOverheat && !send) { + String message = "⚠️ **Kugelmuehle ueberhitzt!** Aktuelle Temp: " + String(curTemp) + " °C"; + sendDiscordNotification(message); + send = true; + } else if (tempOverheat) { + send = false; } - if(overheatCounter > 10000){ - tempOverheat = true; - } - - if(tempOverheat && curTemp <= settings.coldTemp){ - tempOverheat = false; - } - -// ######################################### - - // 5. Menü aufrufen + // ################# Menü / Hotkey auswerten ################### if (holdStop && clickPlus) { bSettings = true; }