diff --git a/display_ui.cpp b/display_ui.cpp index 15344ec..53e218a 100644 --- a/display_ui.cpp +++ b/display_ui.cpp @@ -62,7 +62,7 @@ static void drawHomeScreen(int currentSpeed, int curH, int curM, bool timeValid, u8g2.setDrawColor(1); // 1 = Weiß (an) // 1. Feste Beschriftungen - u8g2.setFont(u8g2_font_6x10_tr); + u8g2.setFont(u8g2_font_helvB08_tr); u8g2.drawStr(5, 9, "Geschw"); u8g2.drawStr(5, 20, "Zeituhr"); u8g2.drawStr(5, 31, "Temp"); @@ -93,7 +93,7 @@ static void drawHomeScreen(int currentSpeed, int curH, int curM, bool timeValid, u8g2.drawStr(74, 30, maxTempBuf); // 5. Große aktuelle Uhrzeit unten links - u8g2.setFont(u8g2_font_6x10_tr); + u8g2.setFont(u8g2_font_helvB08_tr); char timeBuf[10]; if (timeValid) { snprintf(timeBuf, sizeof(timeBuf), "%02d:%02d", curH, curM); @@ -183,62 +183,62 @@ static void drawSettingsScreen(uint8_t settingIdx, TimeEditStep timeEditStep, co // Zeitschaltuhr Einstellungen //###################### u8g2.setFont(textFont); - u8g2.drawStr(23, 10, "Zeituhr Einstellung"); + u8g2.drawStr(10, 10, "Zeituhr Einstellung"); //###################### // Zeitschaltuhr Status //###################### u8g2.setFont(textFont); - u8g2.drawStr(28, 22, "Zeituhr:"); + u8g2.drawStr(10, 22, "Zeituhr:"); // Wenn Zeitschaltuhr Aktiviert if(s.timerEnabled){ // Draw Check - u8g2.drawXBMP(78, 14, 7, 8, image_checked_bits); + u8g2.drawXBMP(78, 15, 7, 8, image_checked_bits); }else{ // Draw X - u8g2.drawXBMP(78, 17, 6, 8, image_crossed_bits); + u8g2.drawXBMP(78, 15, 6, 8, image_crossed_bits); } //###################### // Max Temp //###################### u8g2.setFont(textFont); - u8g2.drawStr(23, 34, "Max Temp:"); + u8g2.drawStr(10, 34, "Max Temp:"); char maxTempBuf[10]; snprintf(maxTempBuf, sizeof(maxTempBuf), "%d", s.maxTemp); u8g2.setFont(valFont); - u8g2.drawStr(77, 34, maxTempBuf); + u8g2.drawStr(78, 34, maxTempBuf); // Wenn Ausgewählt if(s.editMaxTemp){ // Edit Fenster makieren int w = u8g2.getStrWidth(maxTempBuf); - u8g2.drawFrame(75, 24, w + 4, 12); + u8g2.drawFrame(75, 25, w + 6, 12); } //###################### // Beschleunigung //###################### u8g2.setFont(textFont); - u8g2.drawStr(23, 46, "Beschleu:"); + u8g2.drawStr(10, 46, "Beschleu:"); u8g2.setFont(valFont); char accBuf[10]; snprintf(accBuf, sizeof(accBuf), "%d", s.accelRate); - u8g2.drawStr(77, 47, accBuf); + u8g2.drawStr(78, 46, accBuf); // Wenn Ausgewählt if(s.editAcc){ // Edit Fenster makieren int w = u8g2.getStrWidth(accBuf); - u8g2.drawFrame(75, 37, w + 4, 12); + u8g2.drawFrame(75, 37, w + 6, 12); } //###################### // Save //###################### u8g2.setFont(textFont); - u8g2.drawUTF8(26, 58, "Bestätigung"); + u8g2.drawUTF8(10, 58, "Bestätigung"); // Wenn nichts bearbeitet wird... if(!s.editAcc || !s.editMaxTemp){ diff --git a/kugelmuehle.ino b/kugelmuehle.ino index 2c64a2b..4bb3645 100644 --- a/kugelmuehle.ino +++ b/kugelmuehle.ino @@ -254,13 +254,13 @@ void setting(){ settings.startHour = (settings.startHour == 0) ? 23 : settings.startHour - 1; break; case EDIT_START_MIN: - settings.startMin = (settings.startMin == 0) ? 59 : settings.startMin -5; + settings.startMin = (settings.startMin < 5) ? 55 : settings.startMin - 5; break; case EDIT_END_HOUR: settings.endHour = (settings.endHour == 0) ? 23 : settings.endHour - 1; break; case EDIT_END_MIN: - settings.endMin = (settings.endMin == 0) ? 59 : settings.endMin - 5; + settings.endMin = (settings.endMin < 5) ? 55 : settings.endMin - 5; break; default: break; } @@ -275,29 +275,47 @@ void setting(){ } //######### Max Temp Edit ######### - if(settings.editMaxTemp){ - if(clickPlus){ - settings.maxTemp = (settings.maxTemp + 5) % 140; +if (settings.editMaxTemp) { + // PLUS: Bis maximal 150 + if (clickPlus) { + if (settings.maxTemp <= 145) { + settings.maxTemp += 5; + } } - if(clickMinus){ - settings.maxTemp = (settings.maxTemp == 0) ? -20 : settings.maxTemp - 5; + + // MINUS: Bis minimal -20 + if (clickMinus) { + if (settings.maxTemp >= -15) { + settings.maxTemp -= 5; + } } - if(clickStop){ + + if (clickStop) { settings.editMaxTemp = false; } return; // Wichtig: Rest der Funktion überspringen, solange editiert wird! } //######### Beschleunigung Edit ######### - if(settings.editAcc){ - if(clickPlus){ - settings.accelRate = (settings.accelRate + 1000) % 20000; +if (settings.editAcc) { + // PLUS: Erhöhen in 1000er-Schritten bis max 20.000 + if (clickPlus) { + if (settings.accelRate <= 19000) { + settings.accelRate += 1000; + } } - if(clickMinus){ - settings.accelRate = (settings.accelRate == 0) ? 0 : settings.accelRate - 1000; + + // MINUS: Verringern in 1000er-Schritten bis min 1.000 (niemals 0!) + if (clickMinus) { + if (settings.accelRate >= 2000) { + settings.accelRate -= 1000; + } } - if(clickStop){ + + // STOP: Speichern / Verlassen + if (clickStop) { settings.editAcc = false; + stepper->setAcceleration(settings.accelRate); // Direkt am Stepper aktualisieren } return; // Wichtig: Rest der Funktion überspringen, solange editiert wird! } @@ -376,24 +394,25 @@ void loop() { getInputs(clickPlus, clickMinus, clickStop, holdPlus, holdMinus, holdStop); curTemp = getTempInC(senTemp); + // Discord nachricht // BEGREZUNG AUF EINE NACVHRICHT TODO + if(curTemp >= settings.maxTemp && !send){ + String message = "⚠️ **Kugelmuehle ueberhitzt!** Aktuelle Temp: " + String(curTemp) + " °C"; + sendDiscordNotification(message); + send = true; + + // Plus 5 als puffer + }else if(curTemp + 5 < settings.maxTemp){ + send = false; + } + // zeitschaltuhr prüfen int curH, curM, curS; if (settings.timerEnabled && getCurrentTime(curH, curM, curS)) { shouldRun = isTimerActiveNow(curH, curM, settings.startHour, settings.startMin, settings.endHour, settings.endMin); - } - - - if(curTemp >= settings.maxTemp){ - string message = "Kugelmühle überhitzt! Temp = " + String(curTemp) + " °C"; - sendDiscordNotification(message); - send = true; - }else{ - send = false; - } - + } // Not-Stopp aktivieren bei Überhitzung ODER Zeitschaltuhr aus - if(curTemp >= settings.maxTemp || !shouldRun){ + if(curTemp >= settings.maxTemp || (!shouldRun && settings.timerEnabled)){ autoStop = true; // Entsperren NUR wenn abgekühlt UND Zeitschaltuhr aktiv