From 484db54d89589b0e9be8604606b29eb61e22e007 Mon Sep 17 00:00:00 2001 From: Chris Giacofei Date: Mon, 24 Jan 2022 11:11:10 -0500 Subject: [PATCH] Encoder interrupt handles auto mode. Add logic for changing the setpoint temperature as well as duty cycle. --- boil_kettle/src/functions.h | 26 +++++++++++++++++++------- boil_kettle/src/thermoControl.cpp | 2 +- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/boil_kettle/src/functions.h b/boil_kettle/src/functions.h index e923709..e1fe8f6 100644 --- a/boil_kettle/src/functions.h +++ b/boil_kettle/src/functions.h @@ -8,19 +8,31 @@ void doEncoder() { uint8_t result = rotary.read(); uint8_t inc; - uint8_t KettleDuty = (uint8_t)KettleController.Power(); if (result) { uint8_t speed = rotary.speed(); speed >= 10 ? inc = 5 : inc = 1; } + if (KettleController.Mode() == MANUAL) { + uint8_t KettleDuty = (uint8_t)KettleController.Power(); + if (result == DIR_CW && KettleDuty < 100) { + KettleDuty = (KettleDuty / inc) * inc + inc; + } else if (result == DIR_CCW && KettleDuty > 0) { + KettleDuty = (KettleDuty / inc) * inc - inc; + } + KettleController.Power((double)KettleDuty); - if (result == DIR_CW && KettleDuty < 100) { - KettleDuty = (KettleDuty / inc) * inc + inc; - } else if (result == DIR_CCW && KettleDuty > 0) { - KettleDuty = (KettleDuty / inc) * inc - inc; + } else { + + uint8_t KettleTemp = (uint8_t)KettleController.Setpoint(); + if (result == DIR_CW && KettleTemp < 220) { + KettleTemp = (KettleTemp / inc) * inc + inc; + } else if (result == DIR_CCW && KettleTemp > 0) { + KettleTemp = (KettleTemp / inc) * inc - inc; + } + KettleController.Setpoint((double)KettleTemp); } - KettleController.Power((double)KettleDuty); + SettingChanged = true; } @@ -64,7 +76,7 @@ void UpdateBoilKettle(){ KettleController.CycleMode(); SettingChanged = true; } - + if (SettingChanged) { menu.update(); SettingChanged = false; diff --git a/boil_kettle/src/thermoControl.cpp b/boil_kettle/src/thermoControl.cpp index 482b682..2ad0fd6 100644 --- a/boil_kettle/src/thermoControl.cpp +++ b/boil_kettle/src/thermoControl.cpp @@ -98,7 +98,7 @@ void thermoControl::Hysteresis(double hys) { void thermoControl::ThreshPWR(double thresh) { max_pwr_threshold = thresh; } - + void thermoControl::Mode(modes newMode) { OpMode = newMode; }