This commit is contained in:
Jannis 2026-09-25 01:56:44 +02:00
parent 7007552474
commit 68a9d64990
2 changed files with 58 additions and 39 deletions

View file

@ -62,7 +62,7 @@ static void drawHomeScreen(int currentSpeed, int curH, int curM, bool timeValid,
u8g2.setDrawColor(1); // 1 = Weiß (an) u8g2.setDrawColor(1); // 1 = Weiß (an)
// 1. Feste Beschriftungen // 1. Feste Beschriftungen
u8g2.setFont(u8g2_font_6x10_tr); u8g2.setFont(u8g2_font_helvB08_tr);
u8g2.drawStr(5, 9, "Geschw"); u8g2.drawStr(5, 9, "Geschw");
u8g2.drawStr(5, 20, "Zeituhr"); u8g2.drawStr(5, 20, "Zeituhr");
u8g2.drawStr(5, 31, "Temp"); 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); u8g2.drawStr(74, 30, maxTempBuf);
// 5. Große aktuelle Uhrzeit unten links // 5. Große aktuelle Uhrzeit unten links
u8g2.setFont(u8g2_font_6x10_tr); u8g2.setFont(u8g2_font_helvB08_tr);
char timeBuf[10]; char timeBuf[10];
if (timeValid) { if (timeValid) {
snprintf(timeBuf, sizeof(timeBuf), "%02d:%02d", curH, curM); snprintf(timeBuf, sizeof(timeBuf), "%02d:%02d", curH, curM);
@ -183,62 +183,62 @@ static void drawSettingsScreen(uint8_t settingIdx, TimeEditStep timeEditStep, co
// Zeitschaltuhr Einstellungen // Zeitschaltuhr Einstellungen
//###################### //######################
u8g2.setFont(textFont); u8g2.setFont(textFont);
u8g2.drawStr(23, 10, "Zeituhr Einstellung"); u8g2.drawStr(10, 10, "Zeituhr Einstellung");
//###################### //######################
// Zeitschaltuhr Status // Zeitschaltuhr Status
//###################### //######################
u8g2.setFont(textFont); u8g2.setFont(textFont);
u8g2.drawStr(28, 22, "Zeituhr:"); u8g2.drawStr(10, 22, "Zeituhr:");
// Wenn Zeitschaltuhr Aktiviert // Wenn Zeitschaltuhr Aktiviert
if(s.timerEnabled){ if(s.timerEnabled){
// Draw Check // Draw Check
u8g2.drawXBMP(78, 14, 7, 8, image_checked_bits); u8g2.drawXBMP(78, 15, 7, 8, image_checked_bits);
}else{ }else{
// Draw X // Draw X
u8g2.drawXBMP(78, 17, 6, 8, image_crossed_bits); u8g2.drawXBMP(78, 15, 6, 8, image_crossed_bits);
} }
//###################### //######################
// Max Temp // Max Temp
//###################### //######################
u8g2.setFont(textFont); u8g2.setFont(textFont);
u8g2.drawStr(23, 34, "Max Temp:"); u8g2.drawStr(10, 34, "Max Temp:");
char maxTempBuf[10]; char maxTempBuf[10];
snprintf(maxTempBuf, sizeof(maxTempBuf), "%d", s.maxTemp); snprintf(maxTempBuf, sizeof(maxTempBuf), "%d", s.maxTemp);
u8g2.setFont(valFont); u8g2.setFont(valFont);
u8g2.drawStr(77, 34, maxTempBuf); u8g2.drawStr(78, 34, maxTempBuf);
// Wenn Ausgewählt // Wenn Ausgewählt
if(s.editMaxTemp){ if(s.editMaxTemp){
// Edit Fenster makieren // Edit Fenster makieren
int w = u8g2.getStrWidth(maxTempBuf); int w = u8g2.getStrWidth(maxTempBuf);
u8g2.drawFrame(75, 24, w + 4, 12); u8g2.drawFrame(75, 25, w + 6, 12);
} }
//###################### //######################
// Beschleunigung // Beschleunigung
//###################### //######################
u8g2.setFont(textFont); u8g2.setFont(textFont);
u8g2.drawStr(23, 46, "Beschleu:"); u8g2.drawStr(10, 46, "Beschleu:");
u8g2.setFont(valFont); u8g2.setFont(valFont);
char accBuf[10]; char accBuf[10];
snprintf(accBuf, sizeof(accBuf), "%d", s.accelRate); snprintf(accBuf, sizeof(accBuf), "%d", s.accelRate);
u8g2.drawStr(77, 47, accBuf); u8g2.drawStr(78, 46, accBuf);
// Wenn Ausgewählt // Wenn Ausgewählt
if(s.editAcc){ if(s.editAcc){
// Edit Fenster makieren // Edit Fenster makieren
int w = u8g2.getStrWidth(accBuf); int w = u8g2.getStrWidth(accBuf);
u8g2.drawFrame(75, 37, w + 4, 12); u8g2.drawFrame(75, 37, w + 6, 12);
} }
//###################### //######################
// Save // Save
//###################### //######################
u8g2.setFont(textFont); u8g2.setFont(textFont);
u8g2.drawUTF8(26, 58, "Bestätigung"); u8g2.drawUTF8(10, 58, "Bestätigung");
// Wenn nichts bearbeitet wird... // Wenn nichts bearbeitet wird...
if(!s.editAcc || !s.editMaxTemp){ if(!s.editAcc || !s.editMaxTemp){

View file

@ -254,13 +254,13 @@ void setting(){
settings.startHour = (settings.startHour == 0) ? 23 : settings.startHour - 1; settings.startHour = (settings.startHour == 0) ? 23 : settings.startHour - 1;
break; break;
case EDIT_START_MIN: case EDIT_START_MIN:
settings.startMin = (settings.startMin == 0) ? 59 : settings.startMin -5; settings.startMin = (settings.startMin < 5) ? 55 : settings.startMin - 5;
break; break;
case EDIT_END_HOUR: case EDIT_END_HOUR:
settings.endHour = (settings.endHour == 0) ? 23 : settings.endHour - 1; settings.endHour = (settings.endHour == 0) ? 23 : settings.endHour - 1;
break; break;
case EDIT_END_MIN: case EDIT_END_MIN:
settings.endMin = (settings.endMin == 0) ? 59 : settings.endMin - 5; settings.endMin = (settings.endMin < 5) ? 55 : settings.endMin - 5;
break; break;
default: break; default: break;
} }
@ -275,29 +275,47 @@ void setting(){
} }
//######### Max Temp Edit ######### //######### Max Temp Edit #########
if(settings.editMaxTemp){ if (settings.editMaxTemp) {
if(clickPlus){ // PLUS: Bis maximal 150
settings.maxTemp = (settings.maxTemp + 5) % 140; 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; settings.editMaxTemp = false;
} }
return; // Wichtig: Rest der Funktion überspringen, solange editiert wird! return; // Wichtig: Rest der Funktion überspringen, solange editiert wird!
} }
//######### Beschleunigung Edit ######### //######### Beschleunigung Edit #########
if(settings.editAcc){ if (settings.editAcc) {
if(clickPlus){ // PLUS: Erhöhen in 1000er-Schritten bis max 20.000
settings.accelRate = (settings.accelRate + 1000) % 20000; 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; settings.editAcc = false;
stepper->setAcceleration(settings.accelRate); // Direkt am Stepper aktualisieren
} }
return; // Wichtig: Rest der Funktion überspringen, solange editiert wird! return; // Wichtig: Rest der Funktion überspringen, solange editiert wird!
} }
@ -376,24 +394,25 @@ void loop() {
getInputs(clickPlus, clickMinus, clickStop, holdPlus, holdMinus, holdStop); getInputs(clickPlus, clickMinus, clickStop, holdPlus, holdMinus, holdStop);
curTemp = getTempInC(senTemp); 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 // zeitschaltuhr prüfen
int curH, curM, curS; int curH, curM, curS;
if (settings.timerEnabled && getCurrentTime(curH, curM, curS)) { if (settings.timerEnabled && getCurrentTime(curH, curM, curS)) {
shouldRun = isTimerActiveNow(curH, curM, settings.startHour, settings.startMin, settings.endHour, settings.endMin); 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 // Not-Stopp aktivieren bei Überhitzung ODER Zeitschaltuhr aus
if(curTemp >= settings.maxTemp || !shouldRun){ if(curTemp >= settings.maxTemp || (!shouldRun && settings.timerEnabled)){
autoStop = true; autoStop = true;
// Entsperren NUR wenn abgekühlt UND Zeitschaltuhr aktiv // Entsperren NUR wenn abgekühlt UND Zeitschaltuhr aktiv