Dependencies: PID_ PWMOut YMotorDriverBase YMotorDriverPusher YMotorDriverServo YMotorDriverShooter YMotorDriverSupplier
YMotorDriver.cpp
- Committer:
- inst
- Date:
- 2015-08-23
- Revision:
- 1:793d739ebf5e
- Parent:
- 0:44b89a084daf
- Child:
- 2:2e3b56f045f5
File content as of revision 1:793d739ebf5e:
#include "YMotorDriver.h" #include "YMotorDriverServo.h" #include "YMotorDriverSupplier.h" #include "YMotorDriverPusher.h" #include "YMotorDriverShooter.h" const PinName YMotorDriver::mAddressDeciderPinName[] = { dp17, dp18, dp26, dp25 }; const char YMotorDriver::mYMotorDriverBaseAddress[] = { 0xA0 | ( 0x01 << 1 ), 0xA0 | ( 0x02 << 1 ), 0xA0 | ( 0x03 << 1 ), 0xA0 | ( 0x04 << 1 ) }; const char YMotorDriver::mYMotorDriverServoAddress[] = { 0xA0 | ( 0x05 << 1 ), 0xA0 | ( 0x06 << 1 ), 0xA0 | ( 0x07 << 1 ), 0xA0 | ( 0x08 << 1 ), 0xA0 | ( 0x09 << 1 ), 0xA0 | ( 0x0A << 1 ) }; const char YMotorDriver::mYMotorDriverSupplierAddress[] = { 0xA0 | ( 0x0B << 1 ), 0xA0 | ( 0x0C << 1 ) }; const char YMotorDriver::mYMotorDriverPusherAddress[] = { 0xA0 | ( 0x0D << 1 ) }; const char YMotorDriver::mYMotorDriverShooterAddress[] = { 0xA0 | ( 0x0E << 1 ) }; const size_t YMotorDriver::mNumOfYMotorDriverBaseAddress = 4; const size_t YMotorDriver::mNumOfYMotorDriverServoAddress = 6; const size_t YMotorDriver::mNumOfYMotorDriverSupplierAddress = 2; const size_t YMotorDriver::mNumOfYMotorDriverPusherAddress = 1; const size_t YMotorDriver::mNumOfYMotorDriverShooterAddress = 1; YMotorDriver::YMotorDriver(){ char address = 0xA0; // 10100000(2) for ( int i = 0; i < 4; ++i ){ // 101xxxx0 --- xxxxの部分に入力データが入る DigitalIn d( mAddressDeciderPinName[ i ] ); address |= d.read() << ( i + 1 ); } // Motor for ( int i = 0; i < mNumOfYMotorDriverBaseAddress; ++i ){ if ( address == mYMotorDriverBaseAddress[ i ] ){ mYMotorDriver = new YMotorDriverBase( address ); return; } } // Servo for ( int i = 0; i < mNumOfYMotorDriverServoAddress; ++i ){ if ( address == mYMotorDriverServoAddress[ i ] ){ mYMotorDriver = new YMotorDriverServo( address, i ); return; } } // Supplier for ( int i = 0; i < mNumOfYMotorDriverSupplierAddress; ++i ){ if ( address == mYMotorDriverSupplierAddress[ i ] ){ mYMotorDriver = new YMotorDriverSupplier( address ); return; } } // Pusher for ( int i = 0; i < mNumOfYMotorDriverPusherAddress; ++i ){ if ( address == mYMotorDriverPusherAddress[ i ] ){ mYMotorDriver = new YMotorDriverPusher( address ); return; } } // Shooter for ( int i = 0; i < mNumOfYMotorDriverShooterAddress; ++i ){ if ( address == mYMotorDriverShooterAddress[ i ] ){ mYMotorDriver = new YMotorDriverShooter( address ); return; } } DigitalOut err( dp28 ); while ( true ){ printf( "address:%d\r", address ); err = 1; wait( 0.5f ); err = 0; wait( 0.5f ); } } YMotorDriver::~YMotorDriver(){ delete mYMotorDriver; } void YMotorDriver::update(){ mYMotorDriver->update(); }