![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
ER2
main.cpp@1:3396edc39360, 2021-06-02 (annotated)
- Committer:
- dorian06
- Date:
- Wed Jun 02 07:18:21 2021 +0000
- Revision:
- 1:3396edc39360
- Parent:
- 0:517981cf0540
bluetooth
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dorian06 | 1:3396edc39360 | 1 | // pour faire 1 tour on fait 34(nombre de crans pour 1 tour)*Mcran*vitesse |
dorian06 | 1:3396edc39360 | 2 | // sa represente le temp pour faire un tour |
dorian06 | 0:517981cf0540 | 3 | |
dorian06 | 1:3396edc39360 | 4 | #include "mbed.h" |
dorian06 | 1:3396edc39360 | 5 | #define Mcran 0.01099 //distance par cran en metre |
dorian06 | 1:3396edc39360 | 6 | #define vitesse 0.7 //vitesse en m/s (a remesurer avec le robot sur piste) |
dorian06 | 1:3396edc39360 | 7 | #define vmot1TOUR 50 // rapport cyclique 50% |
dorian06 | 1:3396edc39360 | 8 | #define vmot2TOUR -50 //rappot cyclique de -50% |
dorian06 | 1:3396edc39360 | 9 | #define vmot_avance 50 |
dorian06 | 1:3396edc39360 | 10 | #define vmot_recule -50 |
dorian06 | 1:3396edc39360 | 11 | #define vmot_stop 0 |
dorian06 | 0:517981cf0540 | 12 | Serial DebugUART(USBTX, USBRX); |
dorian06 | 1:3396edc39360 | 13 | Serial BTH(p13,p14); //module bleutooth tx,rx |
dorian06 | 1:3396edc39360 | 14 | Timer T1; //utiliser pour faire un tour |
dorian06 | 1:3396edc39360 | 15 | Timer T2; //utiliser pour faire un demi tour |
dorian06 | 1:3396edc39360 | 16 | PwmOut mot1(p23); // mot droit |
dorian06 | 1:3396edc39360 | 17 | PwmOut mot2(p22); //mot gauche |
dorian06 | 1:3396edc39360 | 18 | DigitalOut sens_droit(p11); // definir le sens du moteur droit |
dorian06 | 1:3396edc39360 | 19 | DigitalOut sens_gauche(p12);// definir le sens du moteur gauche |
dorian06 | 1:3396edc39360 | 20 | void sens_vitesse(int,int); // gestin du sens et de la vitesse et du moteur 1 periode entre [-100;100] puis le moteur 1=droit 2=gauche |
dorian06 | 0:517981cf0540 | 21 | int main(void) |
dorian06 | 0:517981cf0540 | 22 | { |
dorian06 | 1:3396edc39360 | 23 | float Ttour=1.40;//34*0.01099*0.7;// calcul du temps mis pour faire un tour |
dorian06 | 1:3396edc39360 | 24 | float Tdemi=0.70;//17*0.01099*0.7;//calcul du temps mis pour faire un demi tour |
dorian06 | 1:3396edc39360 | 25 | //printf("Ttour=%g",Ttour); |
dorian06 | 1:3396edc39360 | 26 | //printf("Tdemi=%g",Tdemi); |
dorian06 | 1:3396edc39360 | 27 | DebugUART.baud(9600); //vitesse de comunication |
dorian06 | 1:3396edc39360 | 28 | BTH.baud(9600); // vitesse de comunication |
dorian06 | 1:3396edc39360 | 29 | char CAR,CH; // caracter envoyé |
dorian06 | 1:3396edc39360 | 30 | mot1.period_us(100); //periode des moteurs |
dorian06 | 1:3396edc39360 | 31 | mot2.period_us(100); |
dorian06 | 0:517981cf0540 | 32 | while(1) { |
dorian06 | 0:517981cf0540 | 33 | if (BTH.readable()) { |
dorian06 | 1:3396edc39360 | 34 | CH=CAR; |
dorian06 | 1:3396edc39360 | 35 | CAR=BTH.getc(); |
dorian06 | 1:3396edc39360 | 36 | //printf("\n\r caractere lu = %c %c",CAR,CH);//affiche le caractere |
dorian06 | 1:3396edc39360 | 37 | } |
dorian06 | 1:3396edc39360 | 38 | |
dorian06 | 1:3396edc39360 | 39 | if(CAR=='A') { //A tour sur lui meme POSSIBLE AVEC LES CRANS 34 |
dorian06 | 1:3396edc39360 | 40 | if(CH!=CAR) { |
dorian06 | 1:3396edc39360 | 41 | T1.start(); |
dorian06 | 1:3396edc39360 | 42 | //printf("start"); |
dorian06 | 1:3396edc39360 | 43 | sens_vitesse(vmot1TOUR,1); //moteur droit rapport cyclique 50 sens avancer |
dorian06 | 1:3396edc39360 | 44 | sens_vitesse(vmot2TOUR,2); //moteur gauche rapport cyclique 50 sens reculer |
dorian06 | 1:3396edc39360 | 45 | } |
dorian06 | 1:3396edc39360 | 46 | |
dorian06 | 1:3396edc39360 | 47 | if (T1.read()>=Ttour) { |
dorian06 | 1:3396edc39360 | 48 | printf("t1"); |
dorian06 | 1:3396edc39360 | 49 | T1.stop(); |
dorian06 | 1:3396edc39360 | 50 | T1.reset(); |
dorian06 | 1:3396edc39360 | 51 | sens_vitesse(vmot_stop,1); |
dorian06 | 1:3396edc39360 | 52 | sens_vitesse(vmot_stop,2); |
dorian06 | 1:3396edc39360 | 53 | } |
dorian06 | 1:3396edc39360 | 54 | } |
dorian06 | 1:3396edc39360 | 55 | if(CAR=='B') { //B robot avance |
dorian06 | 1:3396edc39360 | 56 | sens_vitesse(vmot_avance,1); |
dorian06 | 1:3396edc39360 | 57 | sens_vitesse(vmot_avance,2); |
dorian06 | 1:3396edc39360 | 58 | } |
dorian06 | 1:3396edc39360 | 59 | |
dorian06 | 1:3396edc39360 | 60 | |
dorian06 | 1:3396edc39360 | 61 | if(CAR=='C') { //C demi tour sur lui meme POSSIBLE AVEC LES CRANS 17 |
dorian06 | 1:3396edc39360 | 62 | if(CH!=CAR) { |
dorian06 | 1:3396edc39360 | 63 | T2.start(); |
dorian06 | 1:3396edc39360 | 64 | sens_vitesse(vmot1TOUR,1); //moteur droit rapport cyclique 50 sens avancer |
dorian06 | 1:3396edc39360 | 65 | sens_vitesse(vmot2TOUR,2); //moteur gauche rapport cyclique 50 sens reculer |
dorian06 | 1:3396edc39360 | 66 | } |
dorian06 | 1:3396edc39360 | 67 | |
dorian06 | 1:3396edc39360 | 68 | if (T2.read()>=Tdemi) { |
dorian06 | 1:3396edc39360 | 69 | T2.stop(); |
dorian06 | 1:3396edc39360 | 70 | T2.reset(); |
dorian06 | 1:3396edc39360 | 71 | sens_vitesse(vmot_stop,1); |
dorian06 | 1:3396edc39360 | 72 | sens_vitesse(vmot_stop,2); |
dorian06 | 1:3396edc39360 | 73 | } |
dorian06 | 1:3396edc39360 | 74 | } |
dorian06 | 1:3396edc39360 | 75 | if(CAR=='F') { //F droit |
dorian06 | 1:3396edc39360 | 76 | sens_vitesse(vmot_avance,1); //moteur gauche rapport cyclique 50 sens avancer |
dorian06 | 1:3396edc39360 | 77 | sens_vitesse(vmot_stop,2); //moteur droit stop |
dorian06 | 1:3396edc39360 | 78 | |
dorian06 | 1:3396edc39360 | 79 | |
dorian06 | 1:3396edc39360 | 80 | } |
dorian06 | 1:3396edc39360 | 81 | if(CAR=='E') { //E stop |
dorian06 | 1:3396edc39360 | 82 | sens_vitesse(vmot_stop,1); //moteur droit stop |
dorian06 | 1:3396edc39360 | 83 | sens_vitesse(vmot_stop,2); //moteur gauche stop |
dorian06 | 1:3396edc39360 | 84 | |
dorian06 | 1:3396edc39360 | 85 | } |
dorian06 | 1:3396edc39360 | 86 | |
dorian06 | 1:3396edc39360 | 87 | if(CAR=='D') { //D gauche |
dorian06 | 1:3396edc39360 | 88 | sens_vitesse(vmot_avance,2); //moteur droit rapport cyclique 50 sens avancer |
dorian06 | 1:3396edc39360 | 89 | sens_vitesse(vmot_stop,1); //moteur gauche stop |
dorian06 | 1:3396edc39360 | 90 | |
dorian06 | 1:3396edc39360 | 91 | } |
dorian06 | 1:3396edc39360 | 92 | // G epreuve de la bute |
dorian06 | 1:3396edc39360 | 93 | |
dorian06 | 1:3396edc39360 | 94 | if(CAR=='H') { //H robot recule |
dorian06 | 1:3396edc39360 | 95 | sens_vitesse(vmot_recule,1); |
dorian06 | 1:3396edc39360 | 96 | sens_vitesse(vmot_recule,2); |
dorian06 | 0:517981cf0540 | 97 | } |
dorian06 | 0:517981cf0540 | 98 | |
dorian06 | 0:517981cf0540 | 99 | } |
dorian06 | 1:3396edc39360 | 100 | |
dorian06 | 1:3396edc39360 | 101 | } |
dorian06 | 1:3396edc39360 | 102 | |
dorian06 | 1:3396edc39360 | 103 | |
dorian06 | 1:3396edc39360 | 104 | void sens_vitesse(int Periode,int mot) |
dorian06 | 1:3396edc39360 | 105 | { |
dorian06 | 1:3396edc39360 | 106 | int sens; |
dorian06 | 1:3396edc39360 | 107 | if (Periode<=0) { // determination du sens 1 si peride inf a 0 |
dorian06 | 1:3396edc39360 | 108 | sens=1; |
dorian06 | 1:3396edc39360 | 109 | Periode=abs(Periode); // valeurs abs de la periode donc en positif |
dorian06 | 1:3396edc39360 | 110 | } else { |
dorian06 | 1:3396edc39360 | 111 | sens=0; |
dorian06 | 1:3396edc39360 | 112 | } |
dorian06 | 1:3396edc39360 | 113 | if((mot==1)&&(sens==1)) { |
dorian06 | 1:3396edc39360 | 114 | sens_gauche.write(1); |
dorian06 | 1:3396edc39360 | 115 | mot1.pulsewidth_us(100-Periode); // 100-periode car sinon vitesse est de la difference entre 100 et la periode |
dorian06 | 1:3396edc39360 | 116 | |
dorian06 | 1:3396edc39360 | 117 | } else if((mot==1)&& (sens==0)) { |
dorian06 | 1:3396edc39360 | 118 | sens_gauche.write(0); |
dorian06 | 1:3396edc39360 | 119 | mot1.pulsewidth_us(Periode); |
dorian06 | 1:3396edc39360 | 120 | } |
dorian06 | 1:3396edc39360 | 121 | |
dorian06 | 1:3396edc39360 | 122 | if((mot==2)&&(sens==1)) { |
dorian06 | 1:3396edc39360 | 123 | sens_droit.write(1); |
dorian06 | 1:3396edc39360 | 124 | mot2.pulsewidth_us(100-Periode); // 100-periode car sinon vitesse est de la difference entre 100 et la periode |
dorian06 | 1:3396edc39360 | 125 | } else if((mot==2)&& (sens==0)) { |
dorian06 | 1:3396edc39360 | 126 | sens_droit.write(0); |
dorian06 | 1:3396edc39360 | 127 | mot2.pulsewidth_us(Periode); |
dorian06 | 1:3396edc39360 | 128 | } |
dorian06 | 0:517981cf0540 | 129 | } |