schaltuhr und temp lohik

This commit is contained in:
Jannis 2026-09-22 16:25:32 +02:00
parent 38e76e1e6f
commit bad613780e

View file

@ -26,6 +26,7 @@ FastAccelStepper *stepper = NULL;
// ################ Variabeln ################
const uint32_t MAX_SPEED_HZ = 106000;
const int32_t COLDTEMP_C = 50;
bool clickPlus = 0;
bool clickMinus = 0;
@ -38,7 +39,7 @@ int32_t lastControl = 0;
uint32_t lastPlotTime = 0;
uint32_t lastDispTime = 0;
bool stop = false;
bool autoStop = false;
bool bSettings = false;
uint32_t curTemp = 0;
@ -52,7 +53,7 @@ struct settings{
int endMin = 0;
bool timerEnabled = false;
bool editMaxTemp = false;
int maxTemp = 50; //in °C
int maxTemp = 70; //in °C
bool editAcc = false;
int32_t accelRate = 2000;
}
@ -160,6 +161,22 @@ int getTempInC(uint8_t senTemp){
return ((milliVolt - 500)/10)
}
// Liefert true wenn der Timer aktuell Active ist und false wenn nicht aktiv
bool isTimerActiveNow(int curH, int curM, int startH, int startM, int endH, int endM) {
int current = curH * 60 + curM;
int start = startH * 60 + startM;
int end = endH * 60 + endM;
// Fall A: Zeitfenster am selben Tag (z. B. 08:00 bis 16:00)
if (start <= end) {
return (current >= start && current < end);
}
// Fall B: Zeitfenster über Mitternacht (z. B. 22:00 bis 04:00)
else {
return (current >= start || current < end);
}
}
// Die Funktion behandelt das gesammte Einstellungs menu
void setting(){
//######### Timer Edit #########
@ -275,22 +292,23 @@ void setting(){
}
void updateDisplay(){
if (millis() - lastDispTime >= 50) {
lastDispTime = millis();
int32_t currentSpeed = stepper->getCurrentSpeedInUs() == 0 ? 0 : (1000000 / stepper->getCurrentSpeedInUs());
if (millis() - lastDispTime >= 50) {
lastDispTime = millis();
int32_t currentSpeed = stepper->getCurrentSpeedInUs() == 0 ? 0 : (1000000 / stepper->getCurrentSpeedInUs());
// einstellungs fenster
if(bSettings){
// Mein Menu
// einstellungs fenster
if(bSettings){
// Mein Menu
// Uhrzeit
// Uhrzeit
// Cursor mit settingIdx
//EDIT_START_HOUR
//EDIT_START_MIN
//EDIT_END_HOUR
//EDIT_END_MIN
// Cursor mit settingIdx
//EDIT_START_HOUR
//EDIT_START_MIN
//EDIT_END_HOUR
//EDIT_END_MIN
}
}
}
@ -330,15 +348,26 @@ void loop() {
getInputs(clickPlus, clickMinus, clickStop, holdPlus, holdMinus, holdStop);
curTemp = getTempInC(senTemp);
// zeitschaltuhr prüfen
int curH, curM, curS;
if (settings.timerEnabled && getCurrentTime(curH, curM, curS)) {
bool shouldRun = isTimerActiveNow(curH, curM, settings.startHour, settings.startMin, settings.endHour, settings.endMin);
}
if(curTemp >= settings.maxTemp || !shouldRun){
autoStop = true;
}else if(curTemp <= COLDTEMP_C){
autoStop = false;
}
// Main Control
if(bSettings){
settings()
}else if(clickStop || stop){
}else if(clickStop || autoStop){
stepper->stopMove();
speed = 0;
if(clickPlus){
if(clickStop && clickPlus){
bSettings = true;
settings();
}
}else if(holdPlus){
speed = accelRate;