Committer:
inst
Date:
Wed Oct 14 06:04:45 2015 +0000
Revision:
2:16e29a3a8f58
Parent:
1:d1ca02f9536c

        

Who changed what in which revision?

UserRevisionLine numberNew 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