- Supplies: Arduino board, ... sensor, ... actuator
- Comment: I use 'AutoPID' library and this code is based on the bottom *site.
*https://r-downing.github.io/AutoPID/
- How to install a PID library?
Sketch-> Include Library -> Manage Libraries... -> Write 'pid'
- Example code:
#include <AutoPID.h>
#define p_gain 1
#define i_gain 1
#define d_gain 1
//Min and Max values depend on your actuator function code.
#define control_input_min -255
#define control_input_max 255
// unit: milliseconds
// ex) 20 ms => 50 Hz
#define control_interval 20
double measured_value, desired_value, control_input, value_from_sensor;
AutoPID PID_control(&measured_value, &desired_value, &control_input, control_input_min, ...,
control_input_max, p_gain, i_gain, d_gain);
void setup() {
// put your setup code here, to run once:
PID_control.setTimeStep(control_interval);
}
void loop() {
// put your main code here, to run repeatedly:
desired_value = 0; //It depends on your tasks.
measured_value = value_from_sensor; //It is measured by sensor, so its type depends on your sensor.
PID_control.run();
//Then, 'control_input' is calculated and its value drives your actuators.
//So, you need to insert your actuator function code to the bottom side.
//ex) move(1, 1, control_input);
}