MotorDrive制御
Dependencies: mbed Motor PID QEI2 fusion_Motor
Fork of Nucleo_Motor by
main.cpp@0:8719ed91e6fd, 2015-09-23 (annotated)
- Committer:
- kikoaac
- Date:
- Wed Sep 23 06:06:49 2015 +0000
- Revision:
- 0:8719ed91e6fd
- Child:
- 1:ad8acc6cfba7
No mount QEI
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kikoaac | 0:8719ed91e6fd | 1 | /* |
kikoaac | 0:8719ed91e6fd | 2 | motor 555 |
kikoaac | 0:8719ed91e6fd | 3 | Lipo 4sel |
kikoaac | 0:8719ed91e6fd | 4 | Linear accelerator |
kikoaac | 0:8719ed91e6fd | 5 | Not mount QEI |
kikoaac | 0:8719ed91e6fd | 6 | */ |
kikoaac | 0:8719ed91e6fd | 7 | #include "mbed.h" |
kikoaac | 0:8719ed91e6fd | 8 | #include "Motor.h" |
kikoaac | 0:8719ed91e6fd | 9 | #include "PID.h" |
kikoaac | 0:8719ed91e6fd | 10 | #include "QEI.h" |
kikoaac | 0:8719ed91e6fd | 11 | #include "fusion_Motor.h" |
kikoaac | 0:8719ed91e6fd | 12 | #include "Pin.h" |
kikoaac | 0:8719ed91e6fd | 13 | #define Lx 0.0001 |
kikoaac | 0:8719ed91e6fd | 14 | #define Ku 0.32200//0.922000 |
kikoaac | 0:8719ed91e6fd | 15 | #define Pu 0.0125 |
kikoaac | 0:8719ed91e6fd | 16 | #define Kp Ku*0.6 |
kikoaac | 0:8719ed91e6fd | 17 | #define Ti Pu*0.5 |
kikoaac | 0:8719ed91e6fd | 18 | #define Td Pu*0.125 |
kikoaac | 0:8719ed91e6fd | 19 | |
kikoaac | 0:8719ed91e6fd | 20 | |
kikoaac | 0:8719ed91e6fd | 21 | char data=0,speed=0,sot=0,Data2=0; |
kikoaac | 0:8719ed91e6fd | 22 | #define P Kp |
kikoaac | 0:8719ed91e6fd | 23 | #define I Kp/Ti |
kikoaac | 0:8719ed91e6fd | 24 | #define D Kp*Td |
kikoaac | 0:8719ed91e6fd | 25 | #define Mstate 6 |
kikoaac | 0:8719ed91e6fd | 26 | #define SorT 5 |
kikoaac | 0:8719ed91e6fd | 27 | #define Databit 0 |
kikoaac | 0:8719ed91e6fd | 28 | #define TIME 0.0125 |
kikoaac | 0:8719ed91e6fd | 29 | Timer Time; |
kikoaac | 0:8719ed91e6fd | 30 | /* |
kikoaac | 0:8719ed91e6fd | 31 | PID p(P,I,D,&Time); |
kikoaac | 0:8719ed91e6fd | 32 | QEI i(QEI1_A,QEI1_B,NC,50,&Time); |
kikoaac | 0:8719ed91e6fd | 33 | Motor d(PD_2,PA_13,PA_14,PA_15,PC_9); |
kikoaac | 0:8719ed91e6fd | 34 | fusion_Motor mecanam3(i,p,d); |
kikoaac | 0:8719ed91e6fd | 35 | */ |
kikoaac | 0:8719ed91e6fd | 36 | |
kikoaac | 0:8719ed91e6fd | 37 | |
kikoaac | 0:8719ed91e6fd | 38 | Serial device(D8,D2); |
kikoaac | 0:8719ed91e6fd | 39 | /* |
kikoaac | 0:8719ed91e6fd | 40 | PID *pid; |
kikoaac | 0:8719ed91e6fd | 41 | QEI *wheel; |
kikoaac | 0:8719ed91e6fd | 42 | Motor *motor; |
kikoaac | 0:8719ed91e6fd | 43 | */ |
kikoaac | 0:8719ed91e6fd | 44 | PID pid[4] = {PID(P,I,D,&Time),PID(P,I,D,&Time),PID(P,I,D,&Time),PID(P,I,D,&Time)}; |
kikoaac | 0:8719ed91e6fd | 45 | QEI wheel[4] = {QEI(QEI1_A,QEI1_B,NC,100,&Time),QEI(QEI2_A,QEI2_B,NC,100,&Time),QEI(QEI3_A,QEI3_B,NC,100,&Time),QEI(QEI4_A,QEI4_B,NC,100,&Time)}; |
kikoaac | 0:8719ed91e6fd | 46 | Motor motor[4] = {Motor(A1,A2,A3,A4,A0),Motor(PD_2,PA_13,PA_14,PA_15,PC_9),Motor(D5,D4,D3,PB_8,PB_9),Motor(D12,D11,D10,D9,D7)}; |
kikoaac | 0:8719ed91e6fd | 47 | fusion_Motor mecanam[4] = { |
kikoaac | 0:8719ed91e6fd | 48 | fusion_Motor(wheel[0],pid[0],motor[0]),//front right |
kikoaac | 0:8719ed91e6fd | 49 | fusion_Motor(wheel[1],pid[1],motor[1]),//Back right |
kikoaac | 0:8719ed91e6fd | 50 | fusion_Motor(wheel[2],pid[2],motor[2]),//front left |
kikoaac | 0:8719ed91e6fd | 51 | fusion_Motor(wheel[3],pid[3],motor[3]) |
kikoaac | 0:8719ed91e6fd | 52 | }; |
kikoaac | 0:8719ed91e6fd | 53 | PwmOut led(A0); |
kikoaac | 0:8719ed91e6fd | 54 | //back left |
kikoaac | 0:8719ed91e6fd | 55 | //Motor d(D5,D4,D3,D1,D0); |
kikoaac | 0:8719ed91e6fd | 56 | /* |
kikoaac | 0:8719ed91e6fd | 57 | void Delete() |
kikoaac | 0:8719ed91e6fd | 58 | { |
kikoaac | 0:8719ed91e6fd | 59 | delete pid; |
kikoaac | 0:8719ed91e6fd | 60 | delete wheel; |
kikoaac | 0:8719ed91e6fd | 61 | delete motor; |
kikoaac | 0:8719ed91e6fd | 62 | } |
kikoaac | 0:8719ed91e6fd | 63 | fusion_Motor *mecanam1; |
kikoaac | 0:8719ed91e6fd | 64 | fusion_Motor *mecanam2; |
kikoaac | 0:8719ed91e6fd | 65 | fusion_Motor *mecanam3; |
kikoaac | 0:8719ed91e6fd | 66 | fusion_Motor *mecanam4; |
kikoaac | 0:8719ed91e6fd | 67 | void setup() |
kikoaac | 0:8719ed91e6fd | 68 | { |
kikoaac | 0:8719ed91e6fd | 69 | pid = new PID(P,I,D,&Time); |
kikoaac | 0:8719ed91e6fd | 70 | wheel = new QEI(QEI1_A,QEI1_B,NC,100,&Time); |
kikoaac | 0:8719ed91e6fd | 71 | motor = new Motor(A1,A2,A3,A4,A0); |
kikoaac | 0:8719ed91e6fd | 72 | mecanam1 = new fusion_Motor(*wheel,*pid,*motor); |
kikoaac | 0:8719ed91e6fd | 73 | Delete(); |
kikoaac | 0:8719ed91e6fd | 74 | pid = new PID(P,I,D,&Time); |
kikoaac | 0:8719ed91e6fd | 75 | wheel = new QEI(QEI1_A,QEI1_B,NC,100,&Time); |
kikoaac | 0:8719ed91e6fd | 76 | motor = new Motor(D4,D3,D2,D1,D0); |
kikoaac | 0:8719ed91e6fd | 77 | mecanam2 = new fusion_Motor(*wheel,*pid,*motor); |
kikoaac | 0:8719ed91e6fd | 78 | Delete(); |
kikoaac | 0:8719ed91e6fd | 79 | pid = new PID(P,I,D,&Time); |
kikoaac | 0:8719ed91e6fd | 80 | wheel = new QEI(QEI1_A,QEI1_B,NC,100,&Time); |
kikoaac | 0:8719ed91e6fd | 81 | motor = new Motor(PD_2,PA_13,PA_14,PA_15,PC_9); |
kikoaac | 0:8719ed91e6fd | 82 | mecanam3 = new fusion_Motor(*wheel,*pid,*motor); |
kikoaac | 0:8719ed91e6fd | 83 | Delete(); |
kikoaac | 0:8719ed91e6fd | 84 | pid = new PID(P,I,D,&Time); |
kikoaac | 0:8719ed91e6fd | 85 | wheel = new QEI(QEI1_A,QEI1_B,NC,100,&Time); |
kikoaac | 0:8719ed91e6fd | 86 | motor = new Motor(PC_7,PB_6,PA_7,PA_6,PA_8); |
kikoaac | 0:8719ed91e6fd | 87 | mecanam4 = new fusion_Motor(*wheel,*pid,*motor); |
kikoaac | 0:8719ed91e6fd | 88 | Delete(); |
kikoaac | 0:8719ed91e6fd | 89 | } |
kikoaac | 0:8719ed91e6fd | 90 | */ |
kikoaac | 0:8719ed91e6fd | 91 | /* |
kikoaac | 0:8719ed91e6fd | 92 | | |
kikoaac | 0:8719ed91e6fd | 93 | L\ /R |
kikoaac | 0:8719ed91e6fd | 94 | - - |
kikoaac | 0:8719ed91e6fd | 95 | R/ \L |
kikoaac | 0:8719ed91e6fd | 96 | | |
kikoaac | 0:8719ed91e6fd | 97 | */ |
kikoaac | 0:8719ed91e6fd | 98 | enum STATE { |
kikoaac | 0:8719ed91e6fd | 99 | R,L,F,B |
kikoaac | 0:8719ed91e6fd | 100 | } state; |
kikoaac | 0:8719ed91e6fd | 101 | PwmOut LED(LED1); |
kikoaac | 0:8719ed91e6fd | 102 | #define PI 3.141592653589793 |
kikoaac | 0:8719ed91e6fd | 103 | float DUTY_fill[4]= {0}; |
kikoaac | 0:8719ed91e6fd | 104 | float DUTY_inte[4]= {0}; |
kikoaac | 0:8719ed91e6fd | 105 | float DUTY[4]= {0}; |
kikoaac | 0:8719ed91e6fd | 106 | float DUTY_prev[4]= {0}; |
kikoaac | 0:8719ed91e6fd | 107 | float GAIN_P=P,GAIN_I=I,GAIN_D=D; |
kikoaac | 0:8719ed91e6fd | 108 | void ACT(float tardata,float *data,fusion_Motor *fusion,float *fill,float *inte,float *prev_dat) |
kikoaac | 0:8719ed91e6fd | 109 | { |
kikoaac | 0:8719ed91e6fd | 110 | float inter = TIME; |
kikoaac | 0:8719ed91e6fd | 111 | float dat = tardata-*data; |
kikoaac | 0:8719ed91e6fd | 112 | *inte += (dat + *prev_dat)/2*inter; |
kikoaac | 0:8719ed91e6fd | 113 | *data = GAIN_P*dat+GAIN_D**fill+GAIN_I**inte; |
kikoaac | 0:8719ed91e6fd | 114 | *fill = (dat - *prev_dat)*inter; |
kikoaac | 0:8719ed91e6fd | 115 | *prev_dat =dat; |
kikoaac | 0:8719ed91e6fd | 116 | |
kikoaac | 0:8719ed91e6fd | 117 | /* |
kikoaac | 0:8719ed91e6fd | 118 | if(tardata>*data) |
kikoaac | 0:8719ed91e6fd | 119 | *data+=0.01f; |
kikoaac | 0:8719ed91e6fd | 120 | if(tardata<*data) |
kikoaac | 0:8719ed91e6fd | 121 | *data-=0.01f;*/ |
kikoaac | 0:8719ed91e6fd | 122 | *fusion=*data; |
kikoaac | 0:8719ed91e6fd | 123 | } |
kikoaac | 0:8719ed91e6fd | 124 | void motruns(STATE RorL,float data) |
kikoaac | 0:8719ed91e6fd | 125 | { |
kikoaac | 0:8719ed91e6fd | 126 | if(RorL == R) { |
kikoaac | 0:8719ed91e6fd | 127 | |
kikoaac | 0:8719ed91e6fd | 128 | ACT(data,&DUTY[R],&mecanam[R],&DUTY_fill[R],&DUTY_inte[R],&DUTY_prev[R]); |
kikoaac | 0:8719ed91e6fd | 129 | ACT(data,&DUTY[R+2],&mecanam[R+2],&DUTY_fill[R+2],&DUTY_inte[R+2],&DUTY_prev[R+2]); |
kikoaac | 0:8719ed91e6fd | 130 | } else if(RorL == L) { |
kikoaac | 0:8719ed91e6fd | 131 | ACT(data,&DUTY[L],&mecanam[L],&DUTY_fill[L],&DUTY_inte[L],&DUTY_prev[L]); |
kikoaac | 0:8719ed91e6fd | 132 | ACT(data,&DUTY[L+2],&mecanam[L+2],&DUTY_fill[L+2],&DUTY_inte[L+2],&DUTY_prev[L+2]); |
kikoaac | 0:8719ed91e6fd | 133 | } |
kikoaac | 0:8719ed91e6fd | 134 | } |
kikoaac | 0:8719ed91e6fd | 135 | double mecCot(float angle,STATE RorL) |
kikoaac | 0:8719ed91e6fd | 136 | { |
kikoaac | 0:8719ed91e6fd | 137 | double radian = (double)angle * PI / 180.0; |
kikoaac | 0:8719ed91e6fd | 138 | return RorL==R ? 1.4142135623730950488016887242097*sin(radian-PI/4-PI/2) : 1.4142135623730950488016887242097*cos(radian-PI/4-PI/2); |
kikoaac | 0:8719ed91e6fd | 139 | } |
kikoaac | 0:8719ed91e6fd | 140 | void vector(float angle) |
kikoaac | 0:8719ed91e6fd | 141 | { |
kikoaac | 0:8719ed91e6fd | 142 | angle-=90-360; |
kikoaac | 0:8719ed91e6fd | 143 | if(angle<0)angle+=360; |
kikoaac | 0:8719ed91e6fd | 144 | angle-=360; |
kikoaac | 0:8719ed91e6fd | 145 | if(angle>0)angle-=360; |
kikoaac | 0:8719ed91e6fd | 146 | angle*=-1; |
kikoaac | 0:8719ed91e6fd | 147 | motruns(R,mecCot(angle,R)); |
kikoaac | 0:8719ed91e6fd | 148 | motruns(L,mecCot(angle,L)); |
kikoaac | 0:8719ed91e6fd | 149 | printf("%5.5f %5.5f %5.5f ",angle , mecCot(angle,L),mecCot(angle,R)); |
kikoaac | 0:8719ed91e6fd | 150 | } |
kikoaac | 0:8719ed91e6fd | 151 | |
kikoaac | 0:8719ed91e6fd | 152 | |
kikoaac | 0:8719ed91e6fd | 153 | void pid_setpoint() |
kikoaac | 0:8719ed91e6fd | 154 | { |
kikoaac | 0:8719ed91e6fd | 155 | for(int i=0; i<4; i++) |
kikoaac | 0:8719ed91e6fd | 156 | pid[i].dPoint=wheel[i].getRPM(); |
kikoaac | 0:8719ed91e6fd | 157 | } |
kikoaac | 0:8719ed91e6fd | 158 | void pid_start() |
kikoaac | 0:8719ed91e6fd | 159 | { |
kikoaac | 0:8719ed91e6fd | 160 | for(int i=0; i<4; i++) |
kikoaac | 0:8719ed91e6fd | 161 | pid[i].start(); |
kikoaac | 0:8719ed91e6fd | 162 | } |
kikoaac | 0:8719ed91e6fd | 163 | void pid_reset() |
kikoaac | 0:8719ed91e6fd | 164 | { |
kikoaac | 0:8719ed91e6fd | 165 | for(int i=0; i<4; i++) |
kikoaac | 0:8719ed91e6fd | 166 | pid[i].pid_reset(); |
kikoaac | 0:8719ed91e6fd | 167 | } |
kikoaac | 0:8719ed91e6fd | 168 | void getData() |
kikoaac | 0:8719ed91e6fd | 169 | { |
kikoaac | 0:8719ed91e6fd | 170 | |
kikoaac | 0:8719ed91e6fd | 171 | data = device.getc(); |
kikoaac | 0:8719ed91e6fd | 172 | speed = data>>Mstate; |
kikoaac | 0:8719ed91e6fd | 173 | sot = (data>>SorT)&0x01; |
kikoaac | 0:8719ed91e6fd | 174 | Data2 = data&0x1f; |
kikoaac | 0:8719ed91e6fd | 175 | //printf("%d%d%d%d%d%d%d%d ",(data&0x80)>>7,(data&0x40)>>6,(data&0x20)>>5,(data&0x10)>>4,(data&0x08)>>3,(data&0x04)>>2,(data&0x02)>>1,(data&0x01)); |
kikoaac | 0:8719ed91e6fd | 176 | //printf("0x%x ,0x%x ,0x%x ,0x%x\r\n" ,data,speed,sot,Data2); |
kikoaac | 0:8719ed91e6fd | 177 | //printf("getdata!!\r\n"); |
kikoaac | 0:8719ed91e6fd | 178 | } |
kikoaac | 0:8719ed91e6fd | 179 | bool MotorState() |
kikoaac | 0:8719ed91e6fd | 180 | { |
kikoaac | 0:8719ed91e6fd | 181 | for(int a=0; a<4; a++) { |
kikoaac | 0:8719ed91e6fd | 182 | if(speed==0) { |
kikoaac | 0:8719ed91e6fd | 183 | mecanam[a].run(Free,1); |
kikoaac | 0:8719ed91e6fd | 184 | } else if(speed==1) { |
kikoaac | 0:8719ed91e6fd | 185 | mecanam[a].run(Stop,1); |
kikoaac | 0:8719ed91e6fd | 186 | |
kikoaac | 0:8719ed91e6fd | 187 | } else if(speed==2) { |
kikoaac | 0:8719ed91e6fd | 188 | mecanam[a].duty_max(0.3); |
kikoaac | 0:8719ed91e6fd | 189 | mecanam[a].duty_min(-0.3); |
kikoaac | 0:8719ed91e6fd | 190 | } else if(speed==3) { |
kikoaac | 0:8719ed91e6fd | 191 | mecanam[a].duty_max(1.0); |
kikoaac | 0:8719ed91e6fd | 192 | mecanam[a].duty_min(-1.0); |
kikoaac | 0:8719ed91e6fd | 193 | } |
kikoaac | 0:8719ed91e6fd | 194 | } |
kikoaac | 0:8719ed91e6fd | 195 | return speed==0||speed==1; |
kikoaac | 0:8719ed91e6fd | 196 | } |
kikoaac | 0:8719ed91e6fd | 197 | float Y=1; |
kikoaac | 0:8719ed91e6fd | 198 | void f() |
kikoaac | 0:8719ed91e6fd | 199 | { |
kikoaac | 0:8719ed91e6fd | 200 | static int i; |
kikoaac | 0:8719ed91e6fd | 201 | float x[]= {-100,102,503,-4040}; |
kikoaac | 0:8719ed91e6fd | 202 | Y=x[i]; |
kikoaac | 0:8719ed91e6fd | 203 | //for(int x=0;x<4;x++)mecanam[x]=x[i]; |
kikoaac | 0:8719ed91e6fd | 204 | //printf("Target %f\r\n",x[i]); |
kikoaac | 0:8719ed91e6fd | 205 | i++; |
kikoaac | 0:8719ed91e6fd | 206 | if(i==3)i=0; |
kikoaac | 0:8719ed91e6fd | 207 | } |
kikoaac | 0:8719ed91e6fd | 208 | int main() |
kikoaac | 0:8719ed91e6fd | 209 | { |
kikoaac | 0:8719ed91e6fd | 210 | for(int i=0; i<4; i++) { |
kikoaac | 0:8719ed91e6fd | 211 | mecanam[i](fusion_Motor::Normal,1); |
kikoaac | 0:8719ed91e6fd | 212 | mecanam[i].run(Free,1.0); |
kikoaac | 0:8719ed91e6fd | 213 | } |
kikoaac | 0:8719ed91e6fd | 214 | for(int a=0;a<4;a++){ |
kikoaac | 0:8719ed91e6fd | 215 | mecanam[a].duty_max(1.0); |
kikoaac | 0:8719ed91e6fd | 216 | mecanam[a].duty_min(-1.0);} |
kikoaac | 0:8719ed91e6fd | 217 | led=0.5; |
kikoaac | 0:8719ed91e6fd | 218 | //M=0x1f; |
kikoaac | 0:8719ed91e6fd | 219 | //wait(3); |
kikoaac | 0:8719ed91e6fd | 220 | //setup(); |
kikoaac | 0:8719ed91e6fd | 221 | device.baud(230400); |
kikoaac | 0:8719ed91e6fd | 222 | printf("start main\r\n"); |
kikoaac | 0:8719ed91e6fd | 223 | //device.attach(&getData); |
kikoaac | 0:8719ed91e6fd | 224 | bool pidf=0; |
kikoaac | 0:8719ed91e6fd | 225 | bool prev_sot=0; |
kikoaac | 0:8719ed91e6fd | 226 | |
kikoaac | 0:8719ed91e6fd | 227 | wait(1); |
kikoaac | 0:8719ed91e6fd | 228 | Ticker tic; |
kikoaac | 0:8719ed91e6fd | 229 | tic.attach(&f,3); |
kikoaac | 0:8719ed91e6fd | 230 | //mecanam3=200; |
kikoaac | 0:8719ed91e6fd | 231 | //for(float i=-1;i<1;i+=0.05)printf("%f\r\n",mecanam3.rerpmper(i)); |
kikoaac | 0:8719ed91e6fd | 232 | //for(int i = 0 ;i<4;i++)mecanam[i]=100; |
kikoaac | 0:8719ed91e6fd | 233 | //wait(5); |
kikoaac | 0:8719ed91e6fd | 234 | DigitalIn PIN(USER_BUTTON); |
kikoaac | 0:8719ed91e6fd | 235 | while(1) { |
kikoaac | 0:8719ed91e6fd | 236 | //printf("start main\r\n"); |
kikoaac | 0:8719ed91e6fd | 237 | |
kikoaac | 0:8719ed91e6fd | 238 | for(int x = 0; 1; x++) { |
kikoaac | 0:8719ed91e6fd | 239 | if(PIN==0)GAIN_P+=0.001; |
kikoaac | 0:8719ed91e6fd | 240 | //printf("start main\r\n"); |
kikoaac | 0:8719ed91e6fd | 241 | /*vector(Y); |
kikoaac | 0:8719ed91e6fd | 242 | for(int i=0; i<4; i++) |
kikoaac | 0:8719ed91e6fd | 243 | printf("%f ",DUTY[i]); |
kikoaac | 0:8719ed91e6fd | 244 | printf("%F \r\n",GAIN_P);*/ |
kikoaac | 0:8719ed91e6fd | 245 | wait(TIME); |
kikoaac | 0:8719ed91e6fd | 246 | //mecanam3=mecCot(i,R); |
kikoaac | 0:8719ed91e6fd | 247 | //wait(0.5); |
kikoaac | 0:8719ed91e6fd | 248 | //printf("%5d, %5.5f , %5.5f, %5.5f\r\n",i,mecanam3.getrpm(),mecanam3.rerpmper(mecCot(i,R)),mecanam3.rpmper(300*mecCot(i,R))); |
kikoaac | 0:8719ed91e6fd | 249 | |
kikoaac | 0:8719ed91e6fd | 250 | getData(); |
kikoaac | 0:8719ed91e6fd | 251 | //wait(0.01); |
kikoaac | 0:8719ed91e6fd | 252 | if(MotorState())break; |
kikoaac | 0:8719ed91e6fd | 253 | //if(sot!=prev_sot);//pid_reset(); |
kikoaac | 0:8719ed91e6fd | 254 | |
kikoaac | 0:8719ed91e6fd | 255 | if(sot==0) { |
kikoaac | 0:8719ed91e6fd | 256 | prev_sot=sot; |
kikoaac | 0:8719ed91e6fd | 257 | float angle = Data2*11.25; |
kikoaac | 0:8719ed91e6fd | 258 | vector(angle); |
kikoaac | 0:8719ed91e6fd | 259 | } else if(sot==1) { |
kikoaac | 0:8719ed91e6fd | 260 | if(Data2==0) { |
kikoaac | 0:8719ed91e6fd | 261 | for(int i=0; i<2; i++) { |
kikoaac | 0:8719ed91e6fd | 262 | mecanam[i]=1; |
kikoaac | 0:8719ed91e6fd | 263 | mecanam[i+2]=-1; |
kikoaac | 0:8719ed91e6fd | 264 | } |
kikoaac | 0:8719ed91e6fd | 265 | } |
kikoaac | 0:8719ed91e6fd | 266 | else if(Data2==1) { |
kikoaac | 0:8719ed91e6fd | 267 | for(int i=0; i<2; i++) { |
kikoaac | 0:8719ed91e6fd | 268 | mecanam[i]=-1; |
kikoaac | 0:8719ed91e6fd | 269 | mecanam[i+2]=1; |
kikoaac | 0:8719ed91e6fd | 270 | } |
kikoaac | 0:8719ed91e6fd | 271 | } else { |
kikoaac | 0:8719ed91e6fd | 272 | for(int i=0; i<4; i++) |
kikoaac | 0:8719ed91e6fd | 273 | mecanam[i].run(Stop,1); |
kikoaac | 0:8719ed91e6fd | 274 | } |
kikoaac | 0:8719ed91e6fd | 275 | } |
kikoaac | 0:8719ed91e6fd | 276 | } |
kikoaac | 0:8719ed91e6fd | 277 | } |
kikoaac | 0:8719ed91e6fd | 278 | } |
kikoaac | 0:8719ed91e6fd | 279 | |
kikoaac | 0:8719ed91e6fd | 280 |