Changing code structure to cpp project.

This commit is contained in:
Andru Liu
2024-10-08 15:52:16 -07:00
parent 5d807ecdb3
commit 924f9c5f25
4 changed files with 46 additions and 39 deletions
-39
View File
@@ -1,39 +0,0 @@
#include <iostream>
#include <cmath>
class aPIDController {
public:
aPIDController(double kp, double ki, double kd, double dt)
: Kp(kp), Ki(ki), Kd(kd), dt(dt), integral(0.0), prev_err(0.0) {}
double update(double target, double measured_value) {
double error = target - measured_value;
integral += error * dt;
double derivative = (error - prev_err) / dt;
prev_err = error;
return (Kp * error) + (Ki * integral) + (Kd * derivative);
}
private:
double Kp, Ki, Kd, dt;
double integral;
double prev_err;
};
int main() {
// PID parameters
double Kp = 1.0, Ki = 0.1, Kd = 0.01, dt = 0.1;
aPIDController apid(Kp, Ki, Kd, dt);
double target = 1.0, measured_value = 0.0;
double control_signal = apid.update(target, measured_value);
std::cout << "Output: " << control_signal << std::endl;
return 0;
}
+13
View File
@@ -0,0 +1,13 @@
#include "apid_controller.h"
aPIDController::aPIDController(double kp, double ki, double kd, double dt)
: Kp(kp), Ki(ki), Kd(kd), dt(dt), integral(0.0), prev_err(0.0) {}
double aPIDController::update(double target, double measured_value) {
double error = target - measured_value;
integral += error * dt;
double derivative = (error - prev_err) / dt;
prev_err = error;
return (Kp * error) + (Ki * integral) + (Kd * derivative);
}
+16
View File
@@ -0,0 +1,16 @@
#ifndef APID_CONTROLLER_H
#define APID_CONTROLLER_H
class aPIDController {
public:
aPIDController(double kp, double ki, double kd, double dt);
double update(double target, double measured_value);
private:
double Kp, Ki, Kd, dt;
double integral;
double prev_err;
};
#endif // APID_CONTROLLER_H
+17
View File
@@ -0,0 +1,17 @@
#include <iostream>
#include "apid_controller.h"
const double Kp = 1.0, Ki = 0.1, Kd = 0.01, dt = 0.1;
int main() {
aPIDController apid(Kp, Ki, Kd, dt);
double target = 1.0;
double measured_value = 0.0;
double control_signal = apid.update(target, measured_value);
std::cout << "Output: " << control_signal << std::endl;
return 0;
}