Prog Thib Ju

Dependencies:   mbed

Committer:
JulienB1
Date:
Thu May 02 10:25:13 2019 +0000
Revision:
2:8817ad0d0a78
Parent:
1:7d94c1b86ad6
Child:
3:f56ec086a122
FUSION

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JulienB1 0:5535594ef331 1 #include "mbed.h"
JulienB1 0:5535594ef331 2
MaxLaMenace 1:7d94c1b86ad6 3 // Definition des variables : moteur
JulienB1 0:5535594ef331 4 PwmOut moteur1(D10);
JulienB1 0:5535594ef331 5 PwmOut moteur2(D9);
JulienB1 0:5535594ef331 6 DigitalOut Trig(D12);
JulienB1 0:5535594ef331 7 InterruptIn reception(D8);
JulienB1 0:5535594ef331 8
MaxLaMenace 1:7d94c1b86ad6 9 Serial pc(USBTX, USBRX);
JulienB1 0:5535594ef331 10
MaxLaMenace 1:7d94c1b86ad6 11 Timer t2;
JulienB1 2:8817ad0d0a78 12
JulienB1 0:5535594ef331 13 double rc;
JulienB1 0:5535594ef331 14
MaxLaMenace 1:7d94c1b86ad6 15 // Definition des variables : codeur
JulienB1 2:8817ad0d0a78 16 InterruptIn ComptIncr(D7);
MaxLaMenace 1:7d94c1b86ad6 17
MaxLaMenace 1:7d94c1b86ad6 18 Timer t1;
MaxLaMenace 1:7d94c1b86ad6 19
MaxLaMenace 1:7d94c1b86ad6 20 float tps1;
MaxLaMenace 1:7d94c1b86ad6 21 float tps2;
JulienB1 2:8817ad0d0a78 22 float tps3;
JulienB1 2:8817ad0d0a78 23 float dt;
MaxLaMenace 1:7d94c1b86ad6 24 int a;
JulienB1 2:8817ad0d0a78 25 double v;
JulienB1 2:8817ad0d0a78 26 float dist;
JulienB1 2:8817ad0d0a78 27 float dist_securite;
MaxLaMenace 1:7d94c1b86ad6 28
MaxLaMenace 1:7d94c1b86ad6 29 // Definition des fonctions : moteur
MaxLaMenace 1:7d94c1b86ad6 30
JulienB1 0:5535594ef331 31 void front_montant()
JulienB1 0:5535594ef331 32 {
MaxLaMenace 1:7d94c1b86ad6 33 t2.start();
JulienB1 0:5535594ef331 34 }
JulienB1 0:5535594ef331 35
JulienB1 0:5535594ef331 36 void front_descendant()
JulienB1 0:5535594ef331 37 {
MaxLaMenace 1:7d94c1b86ad6 38 t2.stop();
JulienB1 2:8817ad0d0a78 39 tps3=t2.read();
JulienB1 2:8817ad0d0a78 40 dist=174.9*tps3;
JulienB1 2:8817ad0d0a78 41 // pc.printf("dist = %lf \r\n", dist);
MaxLaMenace 1:7d94c1b86ad6 42 t2.reset();
JulienB1 2:8817ad0d0a78 43 // if (dist == 0.0000){ rc = 1;}
JulienB1 2:8817ad0d0a78 44 /* if (dist<=v*2){ rc = 0;}
JulienB1 2:8817ad0d0a78 45 if (dist<= v*3 && dist>v*2){ rc = 0.2;}
JulienB1 2:8817ad0d0a78 46 if (dist<= v*4 && dist>v*3){ rc = 0.4;}
JulienB1 2:8817ad0d0a78 47 if (dist<= v*5 && dist>v*4){ rc = 0.6;}
JulienB1 2:8817ad0d0a78 48 if (dist<= v*6 && dist>v*5){ rc = 0.8;}
JulienB1 2:8817ad0d0a78 49 if (dist >= v*6) { rc = 1; }*/
JulienB1 2:8817ad0d0a78 50 //if (dist<= dist_securite){rc = rc-rc/200;}
JulienB1 2:8817ad0d0a78 51 //if (dist> dist_securite){rc = rc+(rc+1)/200;}
JulienB1 2:8817ad0d0a78 52 //if (dist<=0.1) {rc = 0;}
JulienB1 2:8817ad0d0a78 53 rc= 1;
JulienB1 0:5535594ef331 54 moteur2.write(rc);
MaxLaMenace 1:7d94c1b86ad6 55
JulienB1 2:8817ad0d0a78 56 // pc.printf("RC = %lf \r\n", rc);
JulienB1 2:8817ad0d0a78 57
JulienB1 0:5535594ef331 58 }
JulienB1 0:5535594ef331 59
MaxLaMenace 1:7d94c1b86ad6 60 // Definition des fonctions : codeur
MaxLaMenace 1:7d94c1b86ad6 61
MaxLaMenace 1:7d94c1b86ad6 62 void vitesse();
MaxLaMenace 1:7d94c1b86ad6 63
MaxLaMenace 1:7d94c1b86ad6 64 void vitesse(){
MaxLaMenace 1:7d94c1b86ad6 65 if (a == 0){
JulienB1 2:8817ad0d0a78 66 tps1 = t1.read();
JulienB1 2:8817ad0d0a78 67 }
JulienB1 2:8817ad0d0a78 68 a++;
JulienB1 2:8817ad0d0a78 69 if (a == 8) {
MaxLaMenace 1:7d94c1b86ad6 70 tps2 = t1.read();
JulienB1 2:8817ad0d0a78 71 dt = tps2 - tps1;
JulienB1 2:8817ad0d0a78 72 v = 0.0201056/dt; // (8/25)*2*pi*4.5 cm de rayon
JulienB1 2:8817ad0d0a78 73 // pc.printf("v = %lf\n", v);
JulienB1 2:8817ad0d0a78 74 // pc.printf("dt = %f\n", 1/dt);
MaxLaMenace 1:7d94c1b86ad6 75 a = 0;
JulienB1 2:8817ad0d0a78 76 dist_securite = 6*v;
MaxLaMenace 1:7d94c1b86ad6 77 //printf("Vitesse = %f tours/s\n", 10/t.read());
MaxLaMenace 1:7d94c1b86ad6 78 }
MaxLaMenace 1:7d94c1b86ad6 79 }
MaxLaMenace 1:7d94c1b86ad6 80
MaxLaMenace 1:7d94c1b86ad6 81 // Debut du main
JulienB1 0:5535594ef331 82 int main()
JulienB1 0:5535594ef331 83 {
MaxLaMenace 1:7d94c1b86ad6 84
MaxLaMenace 1:7d94c1b86ad6 85
MaxLaMenace 1:7d94c1b86ad6 86 // Initialisation Moteur
MaxLaMenace 1:7d94c1b86ad6 87 t2.reset();
JulienB1 0:5535594ef331 88 reception.rise(&front_montant);
JulienB1 0:5535594ef331 89 reception.fall(&front_descendant);
JulienB1 0:5535594ef331 90 moteur1.period_ms(10);
JulienB1 0:5535594ef331 91 moteur2.period_ms(10);
JulienB1 0:5535594ef331 92 moteur1.write(0);
JulienB1 0:5535594ef331 93 moteur2.write(0);
JulienB1 0:5535594ef331 94 pc.baud(9600);
JulienB1 0:5535594ef331 95
MaxLaMenace 1:7d94c1b86ad6 96 // Initialisation Codeur
MaxLaMenace 1:7d94c1b86ad6 97 a = 0;
JulienB1 2:8817ad0d0a78 98 dt = 0;
MaxLaMenace 1:7d94c1b86ad6 99 t1.start();
MaxLaMenace 1:7d94c1b86ad6 100
MaxLaMenace 1:7d94c1b86ad6 101 ComptIncr.rise(&vitesse);
MaxLaMenace 1:7d94c1b86ad6 102
MaxLaMenace 1:7d94c1b86ad6 103 // Debut du while
JulienB1 0:5535594ef331 104 while(1)
JulienB1 0:5535594ef331 105 {
MaxLaMenace 1:7d94c1b86ad6 106 // Partie moteur
JulienB1 0:5535594ef331 107 Trig = 1;
JulienB1 2:8817ad0d0a78 108 pc.printf("dist = %f \r\n", dist);
JulienB1 2:8817ad0d0a78 109 pc.printf("RC = %lf \r\n", rc);
JulienB1 2:8817ad0d0a78 110 pc.printf("v = %lf\n", v);
JulienB1 2:8817ad0d0a78 111
JulienB1 0:5535594ef331 112 wait(0.001);
JulienB1 0:5535594ef331 113 Trig =0 ;
JulienB1 0:5535594ef331 114 wait(0.001);
MaxLaMenace 1:7d94c1b86ad6 115
JulienB1 0:5535594ef331 116
MaxLaMenace 1:7d94c1b86ad6 117 // Partie codeur
MaxLaMenace 1:7d94c1b86ad6 118 //printf("Compteur = %d\n", a);
MaxLaMenace 1:7d94c1b86ad6 119 //printf("Temps 1 = %f\n", tps1);
MaxLaMenace 1:7d94c1b86ad6 120 //printf("Temps 2 = %f\n", tps2);
MaxLaMenace 1:7d94c1b86ad6 121 //printf("Test temps 1 = %f\n", b);
JulienB1 0:5535594ef331 122 }
JulienB1 0:5535594ef331 123 }