generate pwm to control dc motor using lmd18200t like power stage

Dependencies:   mbed

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?

UserRevisionLine numberNew 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