void finish_autotune() { Serial.println("Finished autotune"); Serial.print("Kp: "); Serial.println(auto_tune.GetKp()); Serial.print("Ki: "); Serial.println(auto_tune.GetKi()); Serial.print("Kd: "); Serial.println(auto_tune.GetKd()); profiles[config.driving].kp = auto_tune.GetKp(); profiles[config.driving].ki = auto_tune.GetKi(); profiles[config.driving].kd = auto_tune.GetKd(); save(); tuning = false; }
void update() { if (settings.enabled) { if (autotune_running) { if (pid_autotune.Runtime()) { autotune_running = false; settings.pid.kp = pid_autotune.GetKp(); settings.pid.ki = pid_autotune.GetKi(); settings.pid.kd = pid_autotune.GetKd(); update_pid_tunings(); write_settings(); } } if (! autotune_running) { pid.Compute(); } pid_output_sum += pid_output; pid_output_count++; unsigned long now = millis(); if (now >= window_end_millis) { pid_output_average = pid_output_sum / pid_output_count; if (pid_output_average >= settings.heat_on.threshold) { set_heat(true); } else if (pid_output_average + settings.heat_on.delta <= settings.heat_on.threshold) { set_heat(false); } reset_window(); } } }