Dependencies:   PID_ PWMOut YMotorDriverBase YMotorDriverPusher YMotorDriverServo YMotorDriverShooter YMotorDriverSupplier

Dependents:   YMD

Committer:
inst
Date:
Sun Aug 23 15:19:34 2015 +0000
Revision:
1:793d739ebf5e
Parent:
0:44b89a084daf
Child:
2:2e3b56f045f5

        

Who changed what in which revision?

UserRevisionLine numberNew 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 1:793d739ebf5e 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 }