YMotorDriverServo.h@2:16e29a3a8f58, 2015-10-14 (annotated)
- Committer:
- inst
- Date:
- Wed Oct 14 06:04:45 2015 +0000
- Revision:
- 2:16e29a3a8f58
- Parent:
- 1:d1ca02f9536c
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
inst | 0:9931e2ddc451 | 1 | #ifndef INCLUDED_YMOTOR_DRIVER_SERVO_H |
inst | 0:9931e2ddc451 | 2 | #define INCLUDED_YMOTOR_DRIVER_SERVO_H |
inst | 0:9931e2ddc451 | 3 | |
inst | 0:9931e2ddc451 | 4 | #include "mbed.h" |
inst | 0:9931e2ddc451 | 5 | #include "YMotorDriverBase.h" |
inst | 0:9931e2ddc451 | 6 | #include "PID.h" |
inst | 0:9931e2ddc451 | 7 | |
inst | 0:9931e2ddc451 | 8 | class YMotorDriverServo : public YMotorDriverBase, public PID{ |
inst | 0:9931e2ddc451 | 9 | public: |
inst | 0:9931e2ddc451 | 10 | YMotorDriverServo( char address, int id ); |
inst | 0:9931e2ddc451 | 11 | ~YMotorDriverServo(); |
inst | 0:9931e2ddc451 | 12 | |
inst | 2:16e29a3a8f58 | 13 | protected: |
inst | 2:16e29a3a8f58 | 14 | void stop(){ |
inst | 2:16e29a3a8f58 | 15 | mTargetPosition = mPosition; |
inst | 2:16e29a3a8f58 | 16 | } |
inst | 2:16e29a3a8f58 | 17 | void setTargetPosition( float p ){ |
inst | 2:16e29a3a8f58 | 18 | if ( p < 0.0f ){ |
inst | 2:16e29a3a8f58 | 19 | p = 0.0f; |
inst | 2:16e29a3a8f58 | 20 | } else if ( p > 1.0f ){ |
inst | 2:16e29a3a8f58 | 21 | p = 1.0f; |
inst | 2:16e29a3a8f58 | 22 | } |
inst | 2:16e29a3a8f58 | 23 | mTargetPosition = ( mServoRangeMax[ mID ] - mServoRangeMin[ mID ] ) * p + mServoRangeMin[ mID ]; |
inst | 2:16e29a3a8f58 | 24 | } |
inst | 2:16e29a3a8f58 | 25 | float getPosition(){ |
inst | 2:16e29a3a8f58 | 26 | return mPosition; |
inst | 2:16e29a3a8f58 | 27 | } |
inst | 2:16e29a3a8f58 | 28 | float getTargetPosition(){ |
inst | 2:16e29a3a8f58 | 29 | return mTargetPosition; |
inst | 2:16e29a3a8f58 | 30 | } |
inst | 2:16e29a3a8f58 | 31 | |
inst | 0:9931e2ddc451 | 32 | private: |
inst | 1:d1ca02f9536c | 33 | virtual void updateSpecial(); |
inst | 1:d1ca02f9536c | 34 | virtual void updateI2CSlave(); |
inst | 0:9931e2ddc451 | 35 | virtual void control( float c ); |
inst | 2:16e29a3a8f58 | 36 | virtual void updateServoSpecial(){} |
inst | 0:9931e2ddc451 | 37 | |
inst | 2:16e29a3a8f58 | 38 | static const float mAllowableError[]; |
inst | 0:9931e2ddc451 | 39 | static const PinName mAnalogInPinName; |
inst | 2:16e29a3a8f58 | 40 | static const float mLowPassFilterCoeff[]; |
inst | 0:9931e2ddc451 | 41 | static const float mPCoeff[]; |
inst | 0:9931e2ddc451 | 42 | static const float mICoeff[]; |
inst | 0:9931e2ddc451 | 43 | static const float mDCoeff[]; |
inst | 2:16e29a3a8f58 | 44 | static const float mServoMaxDuty[]; |
inst | 2:16e29a3a8f58 | 45 | static const float mServoMinDuty[]; |
inst | 2:16e29a3a8f58 | 46 | static const float mServoRangeMin[]; |
inst | 2:16e29a3a8f58 | 47 | static const float mServoRangeMax[]; |
inst | 0:9931e2ddc451 | 48 | |
inst | 0:9931e2ddc451 | 49 | AnalogIn* mAnalogIn; |
inst | 0:9931e2ddc451 | 50 | float mPosition; |
inst | 0:9931e2ddc451 | 51 | float mTargetPosition; |
inst | 1:d1ca02f9536c | 52 | bool mHasWorked; |
inst | 0:9931e2ddc451 | 53 | int mID; |
inst | 0:9931e2ddc451 | 54 | }; |
inst | 0:9931e2ddc451 | 55 | |
inst | 0:9931e2ddc451 | 56 | #endif |