Program Listing for File PIDController.hpp

Return to documentation for file (src/LouLib/Controllers/PIDController.hpp)

#ifndef LOULIB_PIDCONTROLLER_HPP
#define LOULIB_PIDCONTROLLER_HPP

#include "../Units/Time.hpp"

namespace LouLib {
    namespace Controllers {

        class PIDController {
        private:
            double kp;
            double ki;
            double kd;
            double errorTolerance;
            double derivativeTolerance;
            double integratorMin;
            double integratorMax;
            double maxOutput;
            double minOutput;
            double deltaTime;
            double setpoint;

            double error;
            double derivative;
            double integral;

        public:

            PIDController(double _kp, double _ki, double _kd);

            void setTolerance(double _errorTolerance, double _derivativeTolerance = (1<<30));

            void setIntegratorRange(double _integratorRangeMin, double _integratorRangeMax);

            void setOutputRange(double _minOutput, double _maxOutput);

            void setDeltaTime(Units::Time _deltaTime);

            void setSetpoint(double _setpoint);

            bool atSetpoint();

            double getOutput();

            void update(double measurement);

        };

    } // LouLib
} // Controllers

#endif //LOULIB_PIDCONTROLLER_HPP