AES-2015 / Mbed 2 deprecated Finalrobot

Dependencies:   mbed-rtos mbed

Committer:
BAC
Date:
Mon Dec 14 15:03:32 2015 +0000
Revision:
0:f15aa1706e16
Child:
1:b3ee94985eca
Child:
2:d7cd4deef7be
bacon & tum

Who changed what in which revision?

UserRevisionLine numberNew contents of line
BAC 0:f15aa1706e16 1 #include "pwm.h"
BAC 0:f15aa1706e16 2
BAC 0:f15aa1706e16 3 MotorDriver::MotorDriver() : M1(PA_6), M2(PA_7), M3(PB_6) {
BAC 0:f15aa1706e16 4 unsigned int i;
BAC 0:f15aa1706e16 5 M1.period_ms(20);
BAC 0:f15aa1706e16 6 M2.period_ms(20);
BAC 0:f15aa1706e16 7 M3.period_ms(20);
BAC 0:f15aa1706e16 8
BAC 0:f15aa1706e16 9 M1.pulsewidth_us(1900);
BAC 0:f15aa1706e16 10 M2.pulsewidth_us(600);
BAC 0:f15aa1706e16 11 M3.pulsewidth_us(2000);
BAC 0:f15aa1706e16 12 wait(2.0f);
BAC 0:f15aa1706e16 13 // first move
BAC 0:f15aa1706e16 14 for(i=0;i<1000;i++)
BAC 0:f15aa1706e16 15 {
BAC 0:f15aa1706e16 16 M1.pulsewidth_us(1900 - (unsigned int)(i*0.853));
BAC 0:f15aa1706e16 17 printf("%d",1900 - (unsigned int)(i*0.853));
BAC 0:f15aa1706e16 18 }
BAC 0:f15aa1706e16 19 for(i=0;i<1000;i++)
BAC 0:f15aa1706e16 20 {
BAC 0:f15aa1706e16 21 M3.pulsewidth_us(2000 - (unsigned int)(i*0.626));
BAC 0:f15aa1706e16 22 }
BAC 0:f15aa1706e16 23 M2.pulsewidth_us(591);
BAC 0:f15aa1706e16 24 wait(2.0f);
BAC 0:f15aa1706e16 25
BAC 0:f15aa1706e16 26 // Look up table
BAC 0:f15aa1706e16 27
BAC 0:f15aa1706e16 28 du1[0] = 1000;
BAC 0:f15aa1706e16 29 du2[0] = 500;
BAC 0:f15aa1706e16 30 du3[0] = 200;
BAC 0:f15aa1706e16 31
BAC 0:f15aa1706e16 32 du1[3] = 10000;
BAC 0:f15aa1706e16 33 du2[3] = 500;
BAC 0:f15aa1706e16 34 du3[3] = 200;
BAC 0:f15aa1706e16 35
BAC 0:f15aa1706e16 36 du1[4] = 10000;
BAC 0:f15aa1706e16 37 du2[3] = 500;
BAC 0:f15aa1706e16 38 du3[3] = 200;
BAC 0:f15aa1706e16 39
BAC 0:f15aa1706e16 40 }
BAC 0:f15aa1706e16 41
BAC 0:f15aa1706e16 42 void MotorDriver::Actuate() {
BAC 0:f15aa1706e16 43 M1.pulsewidth_us(D1);
BAC 0:f15aa1706e16 44 M2.pulsewidth_us(D2);
BAC 0:f15aa1706e16 45 M3.pulsewidth_us(D3);
BAC 0:f15aa1706e16 46 //printf("d1 = %d, d2 = %d, d3 = %d\r\r",D1,D2,D3);
BAC 0:f15aa1706e16 47 }
BAC 0:f15aa1706e16 48
BAC 0:f15aa1706e16 49 // 100/9
BAC 0:f15aa1706e16 50 void MotorDriver::Angle2Duty(float a, float b, float c){
BAC 0:f15aa1706e16 51 float k;
BAC 0:f15aa1706e16 52
BAC 0:f15aa1706e16 53 k = (float) (100.0/9.0); // degree to radian
BAC 0:f15aa1706e16 54 D1 = (unsigned int) (k*a);
BAC 0:f15aa1706e16 55 D2 = (unsigned int) (k*b);
BAC 0:f15aa1706e16 56 D3 = (unsigned int) (k*c);
BAC 0:f15aa1706e16 57 }
BAC 0:f15aa1706e16 58
BAC 0:f15aa1706e16 59 void MotorDriver::DirectDrive(unsigned int d1, unsigned int d2, unsigned int d3){
BAC 0:f15aa1706e16 60 M1.pulsewidth_us(d1);
BAC 0:f15aa1706e16 61 M2.pulsewidth_us(d2);
BAC 0:f15aa1706e16 62 M3.pulsewidth_us(d3);
BAC 0:f15aa1706e16 63 printf("PW1 = %d us,PW2 = %d us,PW3 = %d us \n\r",d1,d2,d3);
BAC 0:f15aa1706e16 64
BAC 0:f15aa1706e16 65 }
BAC 0:f15aa1706e16 66 void MotorDriver::DriveTable(unsigned int index){
BAC 0:f15aa1706e16 67 M1.pulsewidth_us(du1[index]);
BAC 0:f15aa1706e16 68 M2.pulsewidth_us(du2[index]);
BAC 0:f15aa1706e16 69 M3.pulsewidth_us(du3[index]);
BAC 0:f15aa1706e16 70 }
BAC 0:f15aa1706e16 71
BAC 0:f15aa1706e16 72
BAC 0:f15aa1706e16 73 unsigned int MotorDriver::GetD1 (void){
BAC 0:f15aa1706e16 74 return D1;
BAC 0:f15aa1706e16 75 }
BAC 0:f15aa1706e16 76 unsigned int MotorDriver::GetD2 (void){
BAC 0:f15aa1706e16 77 return D2;
BAC 0:f15aa1706e16 78 }
BAC 0:f15aa1706e16 79 unsigned int MotorDriver::GetD3 (void){
BAC 0:f15aa1706e16 80 return D3;
BAC 0:f15aa1706e16 81 }
BAC 0:f15aa1706e16 82 unsigned int MotorDriver::Getdu1 (unsigned int i){
BAC 0:f15aa1706e16 83 return du1[i];
BAC 0:f15aa1706e16 84 }
BAC 0:f15aa1706e16 85 unsigned int MotorDriver::Getdu2 (unsigned int i){
BAC 0:f15aa1706e16 86 return du2[i];
BAC 0:f15aa1706e16 87 }
BAC 0:f15aa1706e16 88 unsigned int MotorDriver::Getdu3 (unsigned int i){
BAC 0:f15aa1706e16 89 return du3[i];
BAC 0:f15aa1706e16 90 }