summaryrefslogtreecommitdiffstats
path: root/include-gpl/dsp/pidcontroller.h
blob: 7b96793faeb1fceb6ad3b69dfa60258b6955b2be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#ifndef INCLUDE_PIDCONTROLLER_H
#define INCLUDE_PIDCONTROLLER_H

#include "dsp/dsptypes.h"

class PIDController {
private:
	Real m_p;
	Real m_i;
	Real m_d;
	Real m_int;
	Real m_diff;

public:
	PIDController();

	void setup(Real p, Real i, Real d);

	Real feed(Real v)
	{
		m_int += v * m_i;
		Real d = m_d * (m_diff - v);
		m_diff = v;
		return (v * m_p) + m_int + d;
	}
};

#endif // INCLUDE_PIDCONTROLLER_H