Diff: YMotorDriverBase.cpp
- Revision:
- 1:c8ed08beefb9
- Parent:
- 0:a2bbf76ca734
- Child:
- 2:871d1f6d311e
diff -r a2bbf76ca734 -r c8ed08beefb9 YMotorDriverBase.cpp --- a/YMotorDriverBase.cpp Sun Aug 23 15:18:04 2015 +0000 +++ b/YMotorDriverBase.cpp Wed Oct 14 06:04:34 2015 +0000 @@ -1,6 +1,7 @@ #include "mbed.h" #include "PWMOut.h" #include "YMotorDriverBase.h" +#include "YMotorDriver.h" const PinName YMotorDriverBase::mMotorDriveDoutPinName[] = { dp6, dp9, dp13, dp14 @@ -16,10 +17,42 @@ dp5, dp27 }; const int YMotorDriverBase::mPwmCycle_us = 300; -const float YMotorDriverBase::mMaxDuty = 0.90f; -const float YMotorDriverBase::mMinDuty = 0.30f; +const float YMotorDriverBase::mMinDutyList[] = { + 0.285f, // steering + 0.285f, // + 0.285f, // + 0.0f, // shooter + 0.3f, // general + //0.25f // supplier + 0.22f // supplier +}; +const float YMotorDriverBase::mMaxDutyList[] = { + 0.85f, // steering + 0.85f, // + 0.85f, // + 1.0f, // shooter + 0.9f, // general + 0.50f // supplier +}; -YMotorDriverBase::YMotorDriverBase( char address ) : mAddress( address ){ +YMotorDriverBase::YMotorDriverBase( char address ) : + mAddress( address ), + mMaxDuty( mMaxDutyList[ YMotorDriver::GENERAL_ID ] ), mMinDuty( mMinDutyList[ YMotorDriver::GENERAL_ID ] ){ + + init(); +} + +YMotorDriverBase::YMotorDriverBase( char address, int id ) : + mAddress( address ), mMaxDuty( mMaxDutyList[ id ] ), mMinDuty( mMinDutyList[ id ] ){ + init(); +} + +YMotorDriverBase::YMotorDriverBase( char address, float maxDuty, float minDuty ) : + mAddress( address ), mMaxDuty( maxDuty ), mMinDuty( minDuty ){ + init(); +} + +void YMotorDriverBase::init(){ mI2C = new I2CSlave( mI2CPinName[ 0 ], mI2CPinName[ 1 ] ); mI2C->address( mAddress ); @@ -43,6 +76,12 @@ } void YMotorDriverBase::update(){ + updateI2CSlave(); + updateSpecial(); + write(); +} + +void YMotorDriverBase::updateI2CSlave(){ switch ( mI2C->receive() ){ case I2CSlave::ReadAddressed:{ char buf[] = { mMinDuty * 255.0f, mMaxDuty * 255.0f }; @@ -65,9 +104,8 @@ case I2CSlave::NoData: break; } - - write(); } + void YMotorDriverBase::write(){ updatePwmDuty();