Encoder interrupt handles auto mode.
Add logic for changing the setpoint temperature as well as duty cycle.
This commit is contained in:
parent
c5b19e9103
commit
484db54d89
@ -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);
|
||||
|
||||
} 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);
|
||||
}
|
||||
|
||||
SettingChanged = true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user