diff --git a/src/channels.rs b/src/channels.rs index c86305d..3b70a6f 100644 --- a/src/channels.rs +++ b/src/channels.rs @@ -475,6 +475,15 @@ impl Channels { serde_json_core::to_vec(&summaries) } + pub fn pid_engaged(&mut self) -> bool { + for channel in 0..CHANNELS { + if self.channel_state(channel).pid_engaged { + return true; + } + } + false + } + fn pwm_summary(&mut self, channel: usize) -> PwmSummary { PwmSummary { channel, diff --git a/src/command_handler.rs b/src/command_handler.rs index b2d3ae0..a0cca45 100644 --- a/src/command_handler.rs +++ b/src/command_handler.rs @@ -187,7 +187,10 @@ impl Handler { match pin { PwmPin::ISet => { channels.channel_state(channel).pid_engaged = false; - leds.g3.off(); + // Only turn off LED when PID is disengaged on all channels + if !channels.pid_engaged() { + leds.g3.off(); + } let current = ElectricCurrent::new::(value); channels.set_i(channel, current); channels.power_up(channel);