yacine sidhoum
/
mbed_PWM_6moteurs_SY_2017_ver007
generate pwm to control dc motor using lmd18200t like power stage
main.cpp@0:d550b3f8c46b, 2017-10-06 (annotated)
- Committer:
- exarkun
- Date:
- Fri Oct 06 08:33:29 2017 +0000
- Revision:
- 0:d550b3f8c46b
lmbed lpc1768 used for control 6 motors dc with lmd18200t by using rs232; done by sy
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
exarkun | 0:d550b3f8c46b | 1 | #include "mbed.h" |
exarkun | 0:d550b3f8c46b | 2 | #include <string> |
exarkun | 0:d550b3f8c46b | 3 | |
exarkun | 0:d550b3f8c46b | 4 | |
exarkun | 0:d550b3f8c46b | 5 | Serial device(p9, p10); // tx, rx |
exarkun | 0:d550b3f8c46b | 6 | DigitalOut led1(LED1); |
exarkun | 0:d550b3f8c46b | 7 | DigitalOut led2(LED2); |
exarkun | 0:d550b3f8c46b | 8 | DigitalOut led3(LED3); |
exarkun | 0:d550b3f8c46b | 9 | DigitalOut led4(LED4); |
exarkun | 0:d550b3f8c46b | 10 | |
exarkun | 0:d550b3f8c46b | 11 | float a=0; |
exarkun | 0:d550b3f8c46b | 12 | float b=0; |
exarkun | 0:d550b3f8c46b | 13 | float c=0; |
exarkun | 0:d550b3f8c46b | 14 | float d=0; |
exarkun | 0:d550b3f8c46b | 15 | float e=0; |
exarkun | 0:d550b3f8c46b | 16 | float f=0; |
exarkun | 0:d550b3f8c46b | 17 | |
exarkun | 0:d550b3f8c46b | 18 | //void init_moteur_1a6() |
exarkun | 0:d550b3f8c46b | 19 | //{ |
exarkun | 0:d550b3f8c46b | 20 | |
exarkun | 0:d550b3f8c46b | 21 | //affectation pin frein moteur |
exarkun | 0:d550b3f8c46b | 22 | DigitalOut frein_moteur1(p5); |
exarkun | 0:d550b3f8c46b | 23 | DigitalOut frein_moteur2(p6); |
exarkun | 0:d550b3f8c46b | 24 | DigitalOut frein_moteur3(p7); |
exarkun | 0:d550b3f8c46b | 25 | DigitalOut frein_moteur4(p8); |
exarkun | 0:d550b3f8c46b | 26 | DigitalOut frein_moteur5(p11); |
exarkun | 0:d550b3f8c46b | 27 | DigitalOut frein_moteur6(p12); |
exarkun | 0:d550b3f8c46b | 28 | |
exarkun | 0:d550b3f8c46b | 29 | //affectation pin sens rotation moteur |
exarkun | 0:d550b3f8c46b | 30 | DigitalOut sens_rotation_moteur1(p13); |
exarkun | 0:d550b3f8c46b | 31 | DigitalOut sens_rotation_moteur2(p14); |
exarkun | 0:d550b3f8c46b | 32 | DigitalOut sens_rotation_moteur3(p27); |
exarkun | 0:d550b3f8c46b | 33 | DigitalOut sens_rotation_moteur4(p28); |
exarkun | 0:d550b3f8c46b | 34 | DigitalOut sens_rotation_moteur5(p29); |
exarkun | 0:d550b3f8c46b | 35 | DigitalOut sens_rotation_moteur6(p30); |
exarkun | 0:d550b3f8c46b | 36 | |
exarkun | 0:d550b3f8c46b | 37 | //affectation pin pwm |
exarkun | 0:d550b3f8c46b | 38 | PwmOut PWM1(p21); |
exarkun | 0:d550b3f8c46b | 39 | PwmOut PWM2(p22); |
exarkun | 0:d550b3f8c46b | 40 | PwmOut PWM3(p23); |
exarkun | 0:d550b3f8c46b | 41 | PwmOut PWM4(p24); |
exarkun | 0:d550b3f8c46b | 42 | PwmOut PWM5(p25); |
exarkun | 0:d550b3f8c46b | 43 | PwmOut PWM6(p26); |
exarkun | 0:d550b3f8c46b | 44 | |
exarkun | 0:d550b3f8c46b | 45 | |
exarkun | 0:d550b3f8c46b | 46 | |
exarkun | 0:d550b3f8c46b | 47 | //}; |
exarkun | 0:d550b3f8c46b | 48 | |
exarkun | 0:d550b3f8c46b | 49 | ///////////////////////////////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 50 | // declaration de la fonction moteur1 // |
exarkun | 0:d550b3f8c46b | 51 | ///////////////////////////////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 52 | |
exarkun | 0:d550b3f8c46b | 53 | void motor1_mouve(float Vmax1,int T11,int sens_rotation1,int frein1) |
exarkun | 0:d550b3f8c46b | 54 | { |
exarkun | 0:d550b3f8c46b | 55 | |
exarkun | 0:d550b3f8c46b | 56 | ////////////////////////// |
exarkun | 0:d550b3f8c46b | 57 | //initialisation moteur // |
exarkun | 0:d550b3f8c46b | 58 | ////////////////////////// |
exarkun | 0:d550b3f8c46b | 59 | |
exarkun | 0:d550b3f8c46b | 60 | DigitalOut frein_moteur1(p5); //declaration sortie frein sur p5 |
exarkun | 0:d550b3f8c46b | 61 | DigitalOut sens_rotation_moteur1(p13); //declaration sens de rotation moteur1 sur p13 |
exarkun | 0:d550b3f8c46b | 62 | PwmOut PWM1(p21); //declaration de la sortie pwm sur p21 |
exarkun | 0:d550b3f8c46b | 63 | PWM1.period(0.00005);// initialisation du rapport cyclique fixe la période à 50us----f=20Khz |
exarkun | 0:d550b3f8c46b | 64 | |
exarkun | 0:d550b3f8c46b | 65 | frein_moteur1.write(frein1);//affectation de la valeur du frein moteur1 |
exarkun | 0:d550b3f8c46b | 66 | sens_rotation_moteur1.write(sens_rotation1); //affectation du sens de rotation moteur1 |
exarkun | 0:d550b3f8c46b | 67 | |
exarkun | 0:d550b3f8c46b | 68 | ////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 69 | // conversion valeur % vers num explotable // |
exarkun | 0:d550b3f8c46b | 70 | ////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 71 | |
exarkun | 0:d550b3f8c46b | 72 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 73 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 74 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 75 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 76 | |
exarkun | 0:d550b3f8c46b | 77 | // acceleration |
exarkun | 0:d550b3f8c46b | 78 | for(float a=0;a<= Vmax1;a=a+0.001) |
exarkun | 0:d550b3f8c46b | 79 | { |
exarkun | 0:d550b3f8c46b | 80 | wait(0.001); |
exarkun | 0:d550b3f8c46b | 81 | PWM1.write(a);// fixe le rapport cyclique à la valeur a% |
exarkun | 0:d550b3f8c46b | 82 | } |
exarkun | 0:d550b3f8c46b | 83 | |
exarkun | 0:d550b3f8c46b | 84 | // mouvement en Vmax |
exarkun | 0:d550b3f8c46b | 85 | wait(T11); |
exarkun | 0:d550b3f8c46b | 86 | |
exarkun | 0:d550b3f8c46b | 87 | // deceleration |
exarkun | 0:d550b3f8c46b | 88 | for(float a=Vmax1;a>=0;a=a-0.001) |
exarkun | 0:d550b3f8c46b | 89 | { |
exarkun | 0:d550b3f8c46b | 90 | wait(0.001); |
exarkun | 0:d550b3f8c46b | 91 | PWM1.write(a);// fixe le rapport cyclique à la valeur a% |
exarkun | 0:d550b3f8c46b | 92 | } |
exarkun | 0:d550b3f8c46b | 93 | |
exarkun | 0:d550b3f8c46b | 94 | }; |
exarkun | 0:d550b3f8c46b | 95 | |
exarkun | 0:d550b3f8c46b | 96 | ///////////////////////////////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 97 | // declaration de la fonction moteur2 // |
exarkun | 0:d550b3f8c46b | 98 | ///////////////////////////////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 99 | |
exarkun | 0:d550b3f8c46b | 100 | void motor2_mouve(float Vmax2,int T12,int sens_rotation2,int frein2) |
exarkun | 0:d550b3f8c46b | 101 | { |
exarkun | 0:d550b3f8c46b | 102 | |
exarkun | 0:d550b3f8c46b | 103 | /////////////////////////// |
exarkun | 0:d550b3f8c46b | 104 | //initialisation moteur2 // |
exarkun | 0:d550b3f8c46b | 105 | /////////////////////////// |
exarkun | 0:d550b3f8c46b | 106 | |
exarkun | 0:d550b3f8c46b | 107 | DigitalOut frein_moteur2(p6); //declaration sortie frein sur p5 |
exarkun | 0:d550b3f8c46b | 108 | DigitalOut sens_rotation_moteur2(p14); //declaration sens de rotation moteur1 sur p13 |
exarkun | 0:d550b3f8c46b | 109 | PwmOut PWM1(p22); //declaration de la sortie pwm sur p21 |
exarkun | 0:d550b3f8c46b | 110 | PWM2.period(0.00005);// initialisation du rapport cyclique fixe la période à 50us----f=20Khz |
exarkun | 0:d550b3f8c46b | 111 | |
exarkun | 0:d550b3f8c46b | 112 | frein_moteur2.write(frein2);//affectation de la valeur du frein moteur1 |
exarkun | 0:d550b3f8c46b | 113 | sens_rotation_moteur2.write(sens_rotation2); //affectation du sens de rotation moteur1 |
exarkun | 0:d550b3f8c46b | 114 | |
exarkun | 0:d550b3f8c46b | 115 | ////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 116 | // conversion valeur % vers num explotable // |
exarkun | 0:d550b3f8c46b | 117 | ////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 118 | |
exarkun | 0:d550b3f8c46b | 119 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 120 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 121 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 122 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 123 | |
exarkun | 0:d550b3f8c46b | 124 | // acceleration |
exarkun | 0:d550b3f8c46b | 125 | for(float a=0;a<= Vmax2;a=a+0.001) |
exarkun | 0:d550b3f8c46b | 126 | { |
exarkun | 0:d550b3f8c46b | 127 | wait(0.001); |
exarkun | 0:d550b3f8c46b | 128 | PWM2.write(a);// fixe le rapport cyclique à la valeur a% |
exarkun | 0:d550b3f8c46b | 129 | } |
exarkun | 0:d550b3f8c46b | 130 | |
exarkun | 0:d550b3f8c46b | 131 | // mouvement en Vmax |
exarkun | 0:d550b3f8c46b | 132 | wait(T12); |
exarkun | 0:d550b3f8c46b | 133 | |
exarkun | 0:d550b3f8c46b | 134 | // deceleration |
exarkun | 0:d550b3f8c46b | 135 | for(float a=Vmax2;a>=0;a=a-0.001) |
exarkun | 0:d550b3f8c46b | 136 | { |
exarkun | 0:d550b3f8c46b | 137 | wait(0.001); |
exarkun | 0:d550b3f8c46b | 138 | PWM2.write(a);// fixe le rapport cyclique à la valeur a% |
exarkun | 0:d550b3f8c46b | 139 | } |
exarkun | 0:d550b3f8c46b | 140 | |
exarkun | 0:d550b3f8c46b | 141 | }; |
exarkun | 0:d550b3f8c46b | 142 | |
exarkun | 0:d550b3f8c46b | 143 | ///////////////////////////////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 144 | // declaration de la fonction moteur3 // |
exarkun | 0:d550b3f8c46b | 145 | ///////////////////////////////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 146 | |
exarkun | 0:d550b3f8c46b | 147 | void motor3_mouve(float Vmax3,int T13,int sens_rotation3,int frein3) |
exarkun | 0:d550b3f8c46b | 148 | { |
exarkun | 0:d550b3f8c46b | 149 | |
exarkun | 0:d550b3f8c46b | 150 | /////////////////////////// |
exarkun | 0:d550b3f8c46b | 151 | //initialisation moteur3 // |
exarkun | 0:d550b3f8c46b | 152 | /////////////////////////// |
exarkun | 0:d550b3f8c46b | 153 | |
exarkun | 0:d550b3f8c46b | 154 | DigitalOut frein_moteur3(p7); //declaration sortie frein sur p5 |
exarkun | 0:d550b3f8c46b | 155 | DigitalOut sens_rotation_moteur3(p27); //declaration sens de rotation moteur1 sur p13 |
exarkun | 0:d550b3f8c46b | 156 | PwmOut PWM3(p23); //declaration de la sortie pwm sur p21 |
exarkun | 0:d550b3f8c46b | 157 | PWM3.period(0.00005);// initialisation du rapport cyclique fixe la période à 50us----f=20Khz |
exarkun | 0:d550b3f8c46b | 158 | |
exarkun | 0:d550b3f8c46b | 159 | frein_moteur3.write(frein3);//affectation de la valeur du frein moteur1 |
exarkun | 0:d550b3f8c46b | 160 | sens_rotation_moteur3.write(sens_rotation3); //affectation du sens de rotation moteur1 |
exarkun | 0:d550b3f8c46b | 161 | |
exarkun | 0:d550b3f8c46b | 162 | ////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 163 | // conversion valeur % vers num explotable // |
exarkun | 0:d550b3f8c46b | 164 | ////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 165 | |
exarkun | 0:d550b3f8c46b | 166 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 167 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 168 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 169 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 170 | |
exarkun | 0:d550b3f8c46b | 171 | // acceleration |
exarkun | 0:d550b3f8c46b | 172 | for(float a=0;a<= Vmax3;a=a+0.001) |
exarkun | 0:d550b3f8c46b | 173 | { |
exarkun | 0:d550b3f8c46b | 174 | wait(0.001); |
exarkun | 0:d550b3f8c46b | 175 | PWM3.write(a);// fixe le rapport cyclique à la valeur a% |
exarkun | 0:d550b3f8c46b | 176 | } |
exarkun | 0:d550b3f8c46b | 177 | |
exarkun | 0:d550b3f8c46b | 178 | // mouvement en Vmax |
exarkun | 0:d550b3f8c46b | 179 | wait(T13); |
exarkun | 0:d550b3f8c46b | 180 | |
exarkun | 0:d550b3f8c46b | 181 | // deceleration |
exarkun | 0:d550b3f8c46b | 182 | for(float a=Vmax3;a>=0;a=a-0.001) |
exarkun | 0:d550b3f8c46b | 183 | { |
exarkun | 0:d550b3f8c46b | 184 | wait(0.001); |
exarkun | 0:d550b3f8c46b | 185 | PWM3.write(a);// fixe le rapport cyclique à la valeur a% |
exarkun | 0:d550b3f8c46b | 186 | } |
exarkun | 0:d550b3f8c46b | 187 | |
exarkun | 0:d550b3f8c46b | 188 | }; |
exarkun | 0:d550b3f8c46b | 189 | |
exarkun | 0:d550b3f8c46b | 190 | ///////////////////////////////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 191 | // declaration de la fonction moteur4 // |
exarkun | 0:d550b3f8c46b | 192 | ///////////////////////////////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 193 | |
exarkun | 0:d550b3f8c46b | 194 | void motor4_mouve(float Vmax4,int T14,int sens_rotation4,int frein4) |
exarkun | 0:d550b3f8c46b | 195 | { |
exarkun | 0:d550b3f8c46b | 196 | |
exarkun | 0:d550b3f8c46b | 197 | /////////////////////////// |
exarkun | 0:d550b3f8c46b | 198 | //initialisation moteur4 // |
exarkun | 0:d550b3f8c46b | 199 | /////////////////////////// |
exarkun | 0:d550b3f8c46b | 200 | |
exarkun | 0:d550b3f8c46b | 201 | DigitalOut frein_moteur4(p8); //declaration sortie frein sur p5 |
exarkun | 0:d550b3f8c46b | 202 | DigitalOut sens_rotation_moteur4(p28); //declaration sens de rotation moteur1 sur p13 |
exarkun | 0:d550b3f8c46b | 203 | PwmOut PWM4(p24); //declaration de la sortie pwm sur p21 |
exarkun | 0:d550b3f8c46b | 204 | PWM4.period(0.00005);// initialisation du rapport cyclique fixe la période à 50us----f=20Khz |
exarkun | 0:d550b3f8c46b | 205 | |
exarkun | 0:d550b3f8c46b | 206 | frein_moteur4.write(frein4);//affectation de la valeur du frein moteur4 |
exarkun | 0:d550b3f8c46b | 207 | sens_rotation_moteur4.write(sens_rotation4); //affectation du sens de rotation moteur4 |
exarkun | 0:d550b3f8c46b | 208 | |
exarkun | 0:d550b3f8c46b | 209 | ////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 210 | // conversion valeur % vers num explotable // |
exarkun | 0:d550b3f8c46b | 211 | ////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 212 | |
exarkun | 0:d550b3f8c46b | 213 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 214 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 215 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 216 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 217 | |
exarkun | 0:d550b3f8c46b | 218 | // acceleration |
exarkun | 0:d550b3f8c46b | 219 | for(float a=0;a<= Vmax4;a=a+0.001) |
exarkun | 0:d550b3f8c46b | 220 | { |
exarkun | 0:d550b3f8c46b | 221 | wait(0.001); |
exarkun | 0:d550b3f8c46b | 222 | PWM4.write(a);// fixe le rapport cyclique à la valeur a% |
exarkun | 0:d550b3f8c46b | 223 | } |
exarkun | 0:d550b3f8c46b | 224 | |
exarkun | 0:d550b3f8c46b | 225 | // mouvement en Vmax |
exarkun | 0:d550b3f8c46b | 226 | wait(T14); |
exarkun | 0:d550b3f8c46b | 227 | |
exarkun | 0:d550b3f8c46b | 228 | // deceleration |
exarkun | 0:d550b3f8c46b | 229 | for(float a=Vmax4;a>=0;a=a-0.001) |
exarkun | 0:d550b3f8c46b | 230 | { |
exarkun | 0:d550b3f8c46b | 231 | wait(0.001); |
exarkun | 0:d550b3f8c46b | 232 | PWM4.write(a);// fixe le rapport cyclique à la valeur a% |
exarkun | 0:d550b3f8c46b | 233 | } |
exarkun | 0:d550b3f8c46b | 234 | |
exarkun | 0:d550b3f8c46b | 235 | }; |
exarkun | 0:d550b3f8c46b | 236 | |
exarkun | 0:d550b3f8c46b | 237 | |
exarkun | 0:d550b3f8c46b | 238 | ///////////////////////////////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 239 | // declaration de la fonction moteur5 // |
exarkun | 0:d550b3f8c46b | 240 | ///////////////////////////////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 241 | |
exarkun | 0:d550b3f8c46b | 242 | void motor5_mouve(float Vmax5,int T15,int sens_rotation5,int frein5) |
exarkun | 0:d550b3f8c46b | 243 | { |
exarkun | 0:d550b3f8c46b | 244 | |
exarkun | 0:d550b3f8c46b | 245 | /////////////////////////// |
exarkun | 0:d550b3f8c46b | 246 | //initialisation moteur5 // |
exarkun | 0:d550b3f8c46b | 247 | /////////////////////////// |
exarkun | 0:d550b3f8c46b | 248 | |
exarkun | 0:d550b3f8c46b | 249 | DigitalOut frein_moteur5(p11); //declaration sortie frein sur p5 |
exarkun | 0:d550b3f8c46b | 250 | DigitalOut sens_rotation_moteur5(p29); //declaration sens de rotation moteur1 sur p13 |
exarkun | 0:d550b3f8c46b | 251 | PwmOut PWM5(p25); //declaration de la sortie pwm sur p21 |
exarkun | 0:d550b3f8c46b | 252 | PWM5.period(0.00005);// initialisation du rapport cyclique fixe la période à 50us----f=20Khz |
exarkun | 0:d550b3f8c46b | 253 | |
exarkun | 0:d550b3f8c46b | 254 | frein_moteur5.write(frein5);//affectation de la valeur du frein moteur4 |
exarkun | 0:d550b3f8c46b | 255 | sens_rotation_moteur5.write(sens_rotation5); //affectation du sens de rotation moteur4 |
exarkun | 0:d550b3f8c46b | 256 | |
exarkun | 0:d550b3f8c46b | 257 | ////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 258 | // conversion valeur % vers num explotable // |
exarkun | 0:d550b3f8c46b | 259 | ////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 260 | |
exarkun | 0:d550b3f8c46b | 261 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 262 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 263 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 264 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 265 | |
exarkun | 0:d550b3f8c46b | 266 | // acceleration |
exarkun | 0:d550b3f8c46b | 267 | for(float a=0;a<= Vmax5;a=a+0.001) |
exarkun | 0:d550b3f8c46b | 268 | { |
exarkun | 0:d550b3f8c46b | 269 | wait(0.001); |
exarkun | 0:d550b3f8c46b | 270 | PWM5.write(a);// fixe le rapport cyclique à la valeur a% |
exarkun | 0:d550b3f8c46b | 271 | } |
exarkun | 0:d550b3f8c46b | 272 | |
exarkun | 0:d550b3f8c46b | 273 | // mouvement en Vmax |
exarkun | 0:d550b3f8c46b | 274 | wait(T15); |
exarkun | 0:d550b3f8c46b | 275 | |
exarkun | 0:d550b3f8c46b | 276 | // deceleration |
exarkun | 0:d550b3f8c46b | 277 | for(float a=Vmax5;a>=0;a=a-0.001) |
exarkun | 0:d550b3f8c46b | 278 | { |
exarkun | 0:d550b3f8c46b | 279 | wait(0.001); |
exarkun | 0:d550b3f8c46b | 280 | PWM5.write(a);// fixe le rapport cyclique à la valeur a% |
exarkun | 0:d550b3f8c46b | 281 | } |
exarkun | 0:d550b3f8c46b | 282 | |
exarkun | 0:d550b3f8c46b | 283 | }; |
exarkun | 0:d550b3f8c46b | 284 | |
exarkun | 0:d550b3f8c46b | 285 | |
exarkun | 0:d550b3f8c46b | 286 | ///////////////////////////////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 287 | // declaration de la fonction moteur6 // |
exarkun | 0:d550b3f8c46b | 288 | ///////////////////////////////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 289 | |
exarkun | 0:d550b3f8c46b | 290 | void motor6_mouve(float Vmax6,int T16,int sens_rotation6,int frein6) |
exarkun | 0:d550b3f8c46b | 291 | { |
exarkun | 0:d550b3f8c46b | 292 | |
exarkun | 0:d550b3f8c46b | 293 | /////////////////////////// |
exarkun | 0:d550b3f8c46b | 294 | //initialisation moteur6 // |
exarkun | 0:d550b3f8c46b | 295 | /////////////////////////// |
exarkun | 0:d550b3f8c46b | 296 | |
exarkun | 0:d550b3f8c46b | 297 | DigitalOut frein_moteur6(p12); //declaration sortie frein sur p5 |
exarkun | 0:d550b3f8c46b | 298 | DigitalOut sens_rotation_moteur6(p30); //declaration sens de rotation moteur1 sur p13 |
exarkun | 0:d550b3f8c46b | 299 | PwmOut PWM6(p26); //declaration de la sortie pwm sur p21 |
exarkun | 0:d550b3f8c46b | 300 | PWM6.period(0.00005);// initialisation du rapport cyclique fixe la période à 50us----f=20Khz |
exarkun | 0:d550b3f8c46b | 301 | |
exarkun | 0:d550b3f8c46b | 302 | frein_moteur6.write(frein6);//affectation de la valeur du frein moteur4 |
exarkun | 0:d550b3f8c46b | 303 | sens_rotation_moteur6.write(sens_rotation6); //affectation du sens de rotation moteur4 |
exarkun | 0:d550b3f8c46b | 304 | |
exarkun | 0:d550b3f8c46b | 305 | ////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 306 | // conversion valeur % vers num explotable // |
exarkun | 0:d550b3f8c46b | 307 | ////////////////////////////////////////////////// |
exarkun | 0:d550b3f8c46b | 308 | |
exarkun | 0:d550b3f8c46b | 309 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 310 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 311 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 312 | // // // // // // // // // // // // // // // // // |
exarkun | 0:d550b3f8c46b | 313 | |
exarkun | 0:d550b3f8c46b | 314 | // acceleration |
exarkun | 0:d550b3f8c46b | 315 | for(float a=0;a<= Vmax6;a=a+0.001) |
exarkun | 0:d550b3f8c46b | 316 | { |
exarkun | 0:d550b3f8c46b | 317 | wait(0.001); |
exarkun | 0:d550b3f8c46b | 318 | PWM6.write(a);// fixe le rapport cyclique à la valeur a% |
exarkun | 0:d550b3f8c46b | 319 | } |
exarkun | 0:d550b3f8c46b | 320 | |
exarkun | 0:d550b3f8c46b | 321 | // mouvement en Vmax |
exarkun | 0:d550b3f8c46b | 322 | wait(T16); |
exarkun | 0:d550b3f8c46b | 323 | |
exarkun | 0:d550b3f8c46b | 324 | // deceleration |
exarkun | 0:d550b3f8c46b | 325 | for(float a=Vmax6;a>=0;a=a-0.001) |
exarkun | 0:d550b3f8c46b | 326 | { |
exarkun | 0:d550b3f8c46b | 327 | wait(0.001); |
exarkun | 0:d550b3f8c46b | 328 | PWM6.write(a);// fixe le rapport cyclique à la valeur a% |
exarkun | 0:d550b3f8c46b | 329 | } |
exarkun | 0:d550b3f8c46b | 330 | |
exarkun | 0:d550b3f8c46b | 331 | }; |
exarkun | 0:d550b3f8c46b | 332 | |
exarkun | 0:d550b3f8c46b | 333 | int main() |
exarkun | 0:d550b3f8c46b | 334 | { |
exarkun | 0:d550b3f8c46b | 335 | device.baud(38400); |
exarkun | 0:d550b3f8c46b | 336 | device.printf("Hello World\n"); |
exarkun | 0:d550b3f8c46b | 337 | |
exarkun | 0:d550b3f8c46b | 338 | |
exarkun | 0:d550b3f8c46b | 339 | char c; |
exarkun | 0:d550b3f8c46b | 340 | |
exarkun | 0:d550b3f8c46b | 341 | led1=0; |
exarkun | 0:d550b3f8c46b | 342 | led2=0; |
exarkun | 0:d550b3f8c46b | 343 | led3=0; |
exarkun | 0:d550b3f8c46b | 344 | led4=0; |
exarkun | 0:d550b3f8c46b | 345 | |
exarkun | 0:d550b3f8c46b | 346 | while (1) |
exarkun | 0:d550b3f8c46b | 347 | { |
exarkun | 0:d550b3f8c46b | 348 | |
exarkun | 0:d550b3f8c46b | 349 | device.printf("Enter axis to move?\r\n"); |
exarkun | 0:d550b3f8c46b | 350 | device.scanf("%c",&c); |
exarkun | 0:d550b3f8c46b | 351 | switch(c){ |
exarkun | 0:d550b3f8c46b | 352 | case '1': |
exarkun | 0:d550b3f8c46b | 353 | //(float Vmax,int T1,int sens_rotation,int frein) |
exarkun | 0:d550b3f8c46b | 354 | device.printf("moving Robotic Axis 1\r\n"); |
exarkun | 0:d550b3f8c46b | 355 | led1=1; |
exarkun | 0:d550b3f8c46b | 356 | led2=0; |
exarkun | 0:d550b3f8c46b | 357 | led3=0; |
exarkun | 0:d550b3f8c46b | 358 | led4=0; |
exarkun | 0:d550b3f8c46b | 359 | motor1_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 360 | break; |
exarkun | 0:d550b3f8c46b | 361 | |
exarkun | 0:d550b3f8c46b | 362 | case '2': |
exarkun | 0:d550b3f8c46b | 363 | //(float Vmax,int T1,int sens_rotation,int frein) |
exarkun | 0:d550b3f8c46b | 364 | device.printf("moving Robotic Axis 2\r\n"); |
exarkun | 0:d550b3f8c46b | 365 | led1=0; |
exarkun | 0:d550b3f8c46b | 366 | led2=1; |
exarkun | 0:d550b3f8c46b | 367 | led3=0; |
exarkun | 0:d550b3f8c46b | 368 | led4=0; |
exarkun | 0:d550b3f8c46b | 369 | motor2_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 370 | break; |
exarkun | 0:d550b3f8c46b | 371 | |
exarkun | 0:d550b3f8c46b | 372 | case '3': |
exarkun | 0:d550b3f8c46b | 373 | //(float Vmax,int T1,int sens_rotation,int frein) |
exarkun | 0:d550b3f8c46b | 374 | device.printf("moving Robotic Axis 3\r\n"); |
exarkun | 0:d550b3f8c46b | 375 | led1=1; |
exarkun | 0:d550b3f8c46b | 376 | led2=1; |
exarkun | 0:d550b3f8c46b | 377 | led3=0; |
exarkun | 0:d550b3f8c46b | 378 | led4=0; |
exarkun | 0:d550b3f8c46b | 379 | motor3_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 380 | break; |
exarkun | 0:d550b3f8c46b | 381 | |
exarkun | 0:d550b3f8c46b | 382 | case '4': |
exarkun | 0:d550b3f8c46b | 383 | //(float Vmax,int T1,int sens_rotation,int frein) |
exarkun | 0:d550b3f8c46b | 384 | device.printf("moving Robotic Axis 4\r\n"); |
exarkun | 0:d550b3f8c46b | 385 | led1=0; |
exarkun | 0:d550b3f8c46b | 386 | led2=0; |
exarkun | 0:d550b3f8c46b | 387 | led3=1; |
exarkun | 0:d550b3f8c46b | 388 | led4=0; |
exarkun | 0:d550b3f8c46b | 389 | motor4_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 390 | break; |
exarkun | 0:d550b3f8c46b | 391 | |
exarkun | 0:d550b3f8c46b | 392 | case '5': |
exarkun | 0:d550b3f8c46b | 393 | //(float Vmax,int T1,int sens_rotation,int frein) |
exarkun | 0:d550b3f8c46b | 394 | device.printf("moving Robotic Axis 5\r\n"); |
exarkun | 0:d550b3f8c46b | 395 | led1=1; |
exarkun | 0:d550b3f8c46b | 396 | led2=0; |
exarkun | 0:d550b3f8c46b | 397 | led3=1; |
exarkun | 0:d550b3f8c46b | 398 | led4=0; |
exarkun | 0:d550b3f8c46b | 399 | motor5_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 400 | break; |
exarkun | 0:d550b3f8c46b | 401 | |
exarkun | 0:d550b3f8c46b | 402 | case '6': |
exarkun | 0:d550b3f8c46b | 403 | //(float Vmax,int T1,int sens_rotation,int frein) |
exarkun | 0:d550b3f8c46b | 404 | device.printf("moving Robotic Axis 6\r\n"); |
exarkun | 0:d550b3f8c46b | 405 | led1=0; |
exarkun | 0:d550b3f8c46b | 406 | led2=1; |
exarkun | 0:d550b3f8c46b | 407 | led3=1; |
exarkun | 0:d550b3f8c46b | 408 | led4=0; |
exarkun | 0:d550b3f8c46b | 409 | motor6_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 410 | break; |
exarkun | 0:d550b3f8c46b | 411 | |
exarkun | 0:d550b3f8c46b | 412 | case '7': |
exarkun | 0:d550b3f8c46b | 413 | //(float Vmax,int T1,int sens_rotation,int frein) |
exarkun | 0:d550b3f8c46b | 414 | device.printf("moving Robotic 7\r\n"); |
exarkun | 0:d550b3f8c46b | 415 | led1=1; |
exarkun | 0:d550b3f8c46b | 416 | led2=1; |
exarkun | 0:d550b3f8c46b | 417 | led3=1; |
exarkun | 0:d550b3f8c46b | 418 | led4=0; |
exarkun | 0:d550b3f8c46b | 419 | motor1_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 420 | motor2_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 421 | motor3_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 422 | motor4_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 423 | motor5_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 424 | motor6_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 425 | |
exarkun | 0:d550b3f8c46b | 426 | break; |
exarkun | 0:d550b3f8c46b | 427 | |
exarkun | 0:d550b3f8c46b | 428 | |
exarkun | 0:d550b3f8c46b | 429 | case '8': |
exarkun | 0:d550b3f8c46b | 430 | //(float Vmax,int T1,int sens_rotation,int frein) |
exarkun | 0:d550b3f8c46b | 431 | device.printf("music Robotic 8\r\n"); |
exarkun | 0:d550b3f8c46b | 432 | led1=0; |
exarkun | 0:d550b3f8c46b | 433 | led2=0; |
exarkun | 0:d550b3f8c46b | 434 | led3=0; |
exarkun | 0:d550b3f8c46b | 435 | led4=1; |
exarkun | 0:d550b3f8c46b | 436 | |
exarkun | 0:d550b3f8c46b | 437 | PwmOut buzzer(p21); |
exarkun | 0:d550b3f8c46b | 438 | float frequency[]={659,554,659,554,440,494,554,587,494,659,554,440}; |
exarkun | 0:d550b3f8c46b | 439 | float beat[]={1,1,1,1,1,0.5,0.5,1,1,1,1,2}; //beat array |
exarkun | 0:d550b3f8c46b | 440 | |
exarkun | 0:d550b3f8c46b | 441 | |
exarkun | 0:d550b3f8c46b | 442 | for (int i=0;i<=11;i++) { |
exarkun | 0:d550b3f8c46b | 443 | buzzer.period(1/(2*frequency[i])); // set PWM period |
exarkun | 0:d550b3f8c46b | 444 | buzzer=0.5; // set duty cycle |
exarkun | 0:d550b3f8c46b | 445 | wait(0.4*beat[i]); // hold for beat period |
exarkun | 0:d550b3f8c46b | 446 | } |
exarkun | 0:d550b3f8c46b | 447 | break; |
exarkun | 0:d550b3f8c46b | 448 | |
exarkun | 0:d550b3f8c46b | 449 | case '9': |
exarkun | 0:d550b3f8c46b | 450 | //(float Vmax,int T1,int sens_rotation,int frein) |
exarkun | 0:d550b3f8c46b | 451 | device.printf("moving Robotic 9\r\n"); |
exarkun | 0:d550b3f8c46b | 452 | |
exarkun | 0:d550b3f8c46b | 453 | led1=1; |
exarkun | 0:d550b3f8c46b | 454 | led2=0; |
exarkun | 0:d550b3f8c46b | 455 | led3=0; |
exarkun | 0:d550b3f8c46b | 456 | led4=1; |
exarkun | 0:d550b3f8c46b | 457 | |
exarkun | 0:d550b3f8c46b | 458 | motor1_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 459 | motor1_mouve(1,1,0,0); |
exarkun | 0:d550b3f8c46b | 460 | motor1_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 461 | motor1_mouve(1,1,0,0); |
exarkun | 0:d550b3f8c46b | 462 | |
exarkun | 0:d550b3f8c46b | 463 | break; |
exarkun | 0:d550b3f8c46b | 464 | |
exarkun | 0:d550b3f8c46b | 465 | case '0': |
exarkun | 0:d550b3f8c46b | 466 | //(float Vmax,int T1,int sens_rotation,int frein) |
exarkun | 0:d550b3f8c46b | 467 | device.printf("moving Robotic 0\r\n"); |
exarkun | 0:d550b3f8c46b | 468 | |
exarkun | 0:d550b3f8c46b | 469 | led1=1; |
exarkun | 0:d550b3f8c46b | 470 | led2=0; |
exarkun | 0:d550b3f8c46b | 471 | led3=1; |
exarkun | 0:d550b3f8c46b | 472 | led4=0; |
exarkun | 0:d550b3f8c46b | 473 | |
exarkun | 0:d550b3f8c46b | 474 | motor1_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 475 | motor1_mouve(1,1,0,0); |
exarkun | 0:d550b3f8c46b | 476 | motor1_mouve(1,1,1,0); |
exarkun | 0:d550b3f8c46b | 477 | motor1_mouve(1,1,0,0); |
exarkun | 0:d550b3f8c46b | 478 | |
exarkun | 0:d550b3f8c46b | 479 | break; |
exarkun | 0:d550b3f8c46b | 480 | |
exarkun | 0:d550b3f8c46b | 481 | } |
exarkun | 0:d550b3f8c46b | 482 | |
exarkun | 0:d550b3f8c46b | 483 | |
exarkun | 0:d550b3f8c46b | 484 | |
exarkun | 0:d550b3f8c46b | 485 | |
exarkun | 0:d550b3f8c46b | 486 | |
exarkun | 0:d550b3f8c46b | 487 | |
exarkun | 0:d550b3f8c46b | 488 | }; |
exarkun | 0:d550b3f8c46b | 489 | |
exarkun | 0:d550b3f8c46b | 490 | } |
exarkun | 0:d550b3f8c46b | 491 |