PM2_Lib
Dependencies: LSM9DS1 RangeFinder FastPWM
Diff: SpeedController.h
- Revision:
- 3:8b42e643b294
- Child:
- 4:9c003c402033
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SpeedController.h Thu Apr 01 14:31:43 2021 +0000 @@ -0,0 +1,49 @@ +#ifndef SpeedController_H_ +#define SpeedController_H_ +#include <cstdlib> +#include <mbed.h> +#include "EncoderCounter.h" +#include "LowpassFilter.h" +#include "ThreadFlag.h" + +class SpeedController +{ + +public: + + SpeedController(PwmOut& pwm, EncoderCounter& encoderCounter); + + virtual ~SpeedController(); + + void setDesiredSpeed(float desiredSpeed); + float getSpeed(); + +private: + + static const float PERIOD; + static const float COUNTS_PER_TURN; + static const float LOWPASS_FILTER_FREQUENCY; + static const float KN; + static const float KP; + static const float MAX_VOLTAGE; + static const float MIN_DUTY_CYCLE; + static const float MAX_DUTY_CYCLE; + + PwmOut& pwm; + EncoderCounter& encoderCounter; + short previousValueCounter; + LowpassFilter speedFilter; + float desiredSpeed; + float actualSpeed; + float actualAngle; + + ThreadFlag threadFlag; + Thread thread; + Ticker ticker; + + void sendThreadFlag(); + void run(); + +}; + +#endif /* SpeedController_H_ */ \ No newline at end of file