use piddiy::PidController;
fn main() {
let mut intensity = 80.0; let set_point = 100.0; let mut pid = PidController::<f64, f64>::new(); pid.compute_fn(PidController::default_compute) .set_point(set_point)
.kp(0.8) .ki(0.2) .kd(0.2);
println!("Target Intensity: {:.2} lux", set_point);
println!("Initial Intensity: {:.2} lux", intensity);
for t in 0..10 {
let control_output = pid.compute(intensity);
intensity += control_output;
println!(
"t = {:2}s, Intensity = {:.2} lux, Control Output = {:.2}, Error = {:.2}, Integral = {:.2}, Derivative = {:.2}",
t, intensity, control_output, pid.error, pid.integral, pid.derivative
);
}
}