4 Pid::Pid(
double p_gain_,
double i_gain_,
double d_gain_,
double target_)
5 :
Pid(p_gain_, i_gain_, d_gain_, 0.0, 0.0, target_, 0.0)
9 Pid::Pid(
double p_gain_,
double i_gain_,
double d_gain_,
double diff_,
double integral_,
10 double target_,
double output_)
11 : param(p_gain_, i_gain_, d_gain_, 0.004),
22 double diff = current_value - target;
24 integral += (old_diff + diff) / 2 * param.
del;
26 i = param.
i_gain * integral;
27 d = param.
d_gain * (diff - old_diff) / param.
del;
40 void Pid::setPid(
double p_gain_,
double i_gain_,
double d_gain_,
double target_)
42 param.
set(p_gain_, i_gain_, d_gain_);
48 if(pid_value > 100.0)
return 100.0;
49 if(pid_value < -100.0)
return -100.0;
void calculate(double light_value)
Pid(double p_gain_, double i_gain_, double d_gain_, double target_)
void setPid(double p_gain_, double i_gain_, double d_gain_, double target_)
double limitOutput(double pid_value)
void set(double p_gain_, double i_gain_, double d_gain_)