Encoder interrupt handles auto mode.

Add logic for changing the setpoint temperature
as well as duty cycle.
This commit is contained in:
Chris Giacofei 2022-01-24 11:11:10 -05:00
parent c5b19e9103
commit 484db54d89
2 changed files with 20 additions and 8 deletions

View File

@ -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;

View File

@ -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;
}