譯文 張
/
BX-car
good
Fork of BX-car by
Diff: motor_api.cpp
- Revision:
- 0:68c173249c01
- Child:
- 7:fd976e1ced33
diff -r 000000000000 -r 68c173249c01 motor_api.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/motor_api.cpp Sun May 25 12:41:59 2014 +0000 @@ -0,0 +1,120 @@ +#include "mbed.h" +#include "motor_api.h" + +#define init_v 10 // period in 1.35 ~170ms + + + + + + + + + BX_motor::BX_motor(char type){ + + + + + + //need N level???? + engine_enable = new DigitalOut(PTE21); + + *engine_enable=1; + + Type=type; + switch (type){ + + case 'A': + forward_A = new PwmOut(PTC3); + backward_A = new PwmOut(PTC4); + + forward_A->period_ms(init_v); + backward_A->period_ms(init_v); + *forward_A=0.5f; + *backward_A=0.5f; + + break; + + + case 'B': + + forward_B = new PwmOut(PTC1); + backward_B = new PwmOut(PTC2); + forward_B->period_ms(init_v); + backward_B->period_ms(init_v); + *forward_B=0.5f; + *backward_B=0.5f; + break; + + + + } + + } + + +// level: -1.0 ~1.0 +void BX_motor::rotate(float level){ + + Level=level; + + if(level >0){ + + switch(Type){ + + case 'A': + *forward_A=level; + *backward_A=0; + break; + case 'B': + *forward_B=level; + *backward_B=0; + break; + } + + }else if(level <0){ + + level=-1.0*level; + + switch(Type){ + + case 'A': + *forward_A=0; + *backward_A=level; + break; + case 'B': + *forward_B=0; + *backward_B=level; + break; + } + + } + else{ + switch(Type){ + + case 'A': + *forward_A=1.0f; + *backward_A=1.0f; + + break; + case 'B': + *forward_B=1.0f; + *backward_B=1.0f; + break; + } + + + } + + + + + + + + + +} + + +