Dependencies: PID_ PWMOut YMotorDriverBase YMotorDriverPusher YMotorDriverServo YMotorDriverShooter YMotorDriverSupplier
YMotorDriver.cpp@0:44b89a084daf, 2015-08-23 (annotated)
- Committer:
- inst
- Date:
- Sun Aug 23 15:18:32 2015 +0000
- Revision:
- 0:44b89a084daf
- Child:
- 1:793d739ebf5e
fitst
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
inst | 0:44b89a084daf | 1 | #include "YMotorDriver.h" |
inst | 0:44b89a084daf | 2 | #include "YMotorDriverServo.h" |
inst | 0:44b89a084daf | 3 | #include "YMotorDriverSupplier.h" |
inst | 0:44b89a084daf | 4 | #include "YMotorDriverPusher.h" |
inst | 0:44b89a084daf | 5 | #include "YMotorDriverShooter.h" |
inst | 0:44b89a084daf | 6 | |
inst | 0:44b89a084daf | 7 | const PinName YMotorDriver::mAddressDeciderPinName[] = { |
inst | 0:44b89a084daf | 8 | dp17, dp18, dp26, dp25 |
inst | 0:44b89a084daf | 9 | }; |
inst | 0:44b89a084daf | 10 | const char YMotorDriver::mYMotorDriverBaseAddress[] = { |
inst | 0:44b89a084daf | 11 | 0xA0 | ( 0x01 << 1 ), |
inst | 0:44b89a084daf | 12 | 0xA0 | ( 0x02 << 1 ), |
inst | 0:44b89a084daf | 13 | 0xA0 | ( 0x03 << 1 ), |
inst | 0:44b89a084daf | 14 | 0xA0 | ( 0x04 << 1 ) |
inst | 0:44b89a084daf | 15 | }; |
inst | 0:44b89a084daf | 16 | const char YMotorDriver::mYMotorDriverServoAddress[] = { |
inst | 0:44b89a084daf | 17 | 0xA0 | ( 0x05 << 1 ), |
inst | 0:44b89a084daf | 18 | 0xA0 | ( 0x06 << 1 ), |
inst | 0:44b89a084daf | 19 | 0xA0 | ( 0x07 << 1 ), |
inst | 0:44b89a084daf | 20 | 0xA0 | ( 0x08 << 1 ), |
inst | 0:44b89a084daf | 21 | 0xA0 | ( 0x09 << 1 ), |
inst | 0:44b89a084daf | 22 | 0xA0 | ( 0x0A << 1 ) |
inst | 0:44b89a084daf | 23 | }; |
inst | 0:44b89a084daf | 24 | const char YMotorDriver::mYMotorDriverSupplierAddress[] = { |
inst | 0:44b89a084daf | 25 | 0xA0 | ( 0x0B << 1 ), |
inst | 0:44b89a084daf | 26 | 0xA0 | ( 0x0C << 1 ) |
inst | 0:44b89a084daf | 27 | }; |
inst | 0:44b89a084daf | 28 | const char YMotorDriver::mYMotorDriverPusherAddress[] = { |
inst | 0:44b89a084daf | 29 | 0xA0 | ( 0x0D << 1 ) |
inst | 0:44b89a084daf | 30 | }; |
inst | 0:44b89a084daf | 31 | const char YMotorDriver::mYMotorDriverShooterAddress[] = { |
inst | 0:44b89a084daf | 32 | 0xA0 | ( 0x0E << 1 ) |
inst | 0:44b89a084daf | 33 | }; |
inst | 0:44b89a084daf | 34 | const size_t YMotorDriver::mNumOfYMotorDriverBaseAddress = 4; |
inst | 0:44b89a084daf | 35 | const size_t YMotorDriver::mNumOfYMotorDriverServoAddress = 6; |
inst | 0:44b89a084daf | 36 | const size_t YMotorDriver::mNumOfYMotorDriverSupplierAddress = 2; |
inst | 0:44b89a084daf | 37 | const size_t YMotorDriver::mNumOfYMotorDriverPusherAddress = 1; |
inst | 0:44b89a084daf | 38 | const size_t YMotorDriver::mNumOfYMotorDriverShooterAddress = 1; |
inst | 0:44b89a084daf | 39 | |
inst | 0:44b89a084daf | 40 | YMotorDriver::YMotorDriver(){ |
inst | 0:44b89a084daf | 41 | char address = 0xA0; // 10100000(2) |
inst | 0:44b89a084daf | 42 | for ( int i = 0; i < 4; ++i ){ |
inst | 0:44b89a084daf | 43 | // 101xxxx0 --- xxxxの部分に入力データが入る |
inst | 0:44b89a084daf | 44 | DigitalIn d( mAddressDeciderPinName[ i ] ); |
inst | 0:44b89a084daf | 45 | address |= d.read() << ( i + 1 ); |
inst | 0:44b89a084daf | 46 | } |
inst | 0:44b89a084daf | 47 | |
inst | 0:44b89a084daf | 48 | // Motor |
inst | 0:44b89a084daf | 49 | for ( int i = 0; i < mNumOfYMotorDriverBaseAddress; ++i ){ |
inst | 0:44b89a084daf | 50 | if ( address == mYMotorDriverBaseAddress[ i ] ){ |
inst | 0:44b89a084daf | 51 | mYMotorDriver = new YMotorDriverBase( address ); |
inst | 0:44b89a084daf | 52 | return; |
inst | 0:44b89a084daf | 53 | } |
inst | 0:44b89a084daf | 54 | } |
inst | 0:44b89a084daf | 55 | // Servo |
inst | 0:44b89a084daf | 56 | for ( int i = 0; i < mNumOfYMotorDriverServoAddress; ++i ){ |
inst | 0:44b89a084daf | 57 | if ( address == mYMotorDriverServoAddress[ i ] ){ |
inst | 0:44b89a084daf | 58 | mYMotorDriver = new YMotorDriverServo( address, i ); |
inst | 0:44b89a084daf | 59 | return; |
inst | 0:44b89a084daf | 60 | } |
inst | 0:44b89a084daf | 61 | } |
inst | 0:44b89a084daf | 62 | // Supplier |
inst | 0:44b89a084daf | 63 | for ( int i = 0; i < mNumOfYMotorDriverSupplierAddress; ++i ){ |
inst | 0:44b89a084daf | 64 | if ( address == mYMotorDriverSupplierAddress[ i ] ){ |
inst | 0:44b89a084daf | 65 | mYMotorDriver = new YMotorDriverSupplier( address ); |
inst | 0:44b89a084daf | 66 | return; |
inst | 0:44b89a084daf | 67 | } |
inst | 0:44b89a084daf | 68 | } |
inst | 0:44b89a084daf | 69 | // Pusher |
inst | 0:44b89a084daf | 70 | for ( int i = 0; i < mNumOfYMotorDriverPusherAddress; ++i ){ |
inst | 0:44b89a084daf | 71 | if ( address == mYMotorDriverPusherAddress[ i ] ){ |
inst | 0:44b89a084daf | 72 | mYMotorDriver = new YMotorDriverPusher( address ); |
inst | 0:44b89a084daf | 73 | return; |
inst | 0:44b89a084daf | 74 | } |
inst | 0:44b89a084daf | 75 | } |
inst | 0:44b89a084daf | 76 | // Shooter |
inst | 0:44b89a084daf | 77 | for ( int i = 0; i < mNumOfYMotorDriverShooterAddress; ++i ){ |
inst | 0:44b89a084daf | 78 | if ( address == mYMotorDriverShooterAddress[ i ] ){ |
inst | 0:44b89a084daf | 79 | mYMotorDriver = new YMotorDriverShooter( address ); |
inst | 0:44b89a084daf | 80 | return; |
inst | 0:44b89a084daf | 81 | } |
inst | 0:44b89a084daf | 82 | } |
inst | 0:44b89a084daf | 83 | |
inst | 0:44b89a084daf | 84 | DigitalOut err( dp28 ); |
inst | 0:44b89a084daf | 85 | while ( true ){ |
inst | 0:44b89a084daf | 86 | printf( "address:%d\r", address ); |
inst | 0:44b89a084daf | 87 | err = 1; |
inst | 0:44b89a084daf | 88 | wait( 0.5f ); |
inst | 0:44b89a084daf | 89 | err = 0; |
inst | 0:44b89a084daf | 90 | wait( 0.5f ); |
inst | 0:44b89a084daf | 91 | } |
inst | 0:44b89a084daf | 92 | } |
inst | 0:44b89a084daf | 93 | |
inst | 0:44b89a084daf | 94 | YMotorDriver::~YMotorDriver(){ |
inst | 0:44b89a084daf | 95 | delete mYMotorDriver; |
inst | 0:44b89a084daf | 96 | } |
inst | 0:44b89a084daf | 97 | |
inst | 0:44b89a084daf | 98 | void YMotorDriver::update(){ |
inst | 0:44b89a084daf | 99 | mYMotorDriver->update(); |
inst | 0:44b89a084daf | 100 | } |