Prog Thib Ju

Dependencies:   mbed

Revision:
3:f56ec086a122
Parent:
2:8817ad0d0a78
Child:
4:b00081eecde0
--- a/main.cpp	Thu May 02 10:25:13 2019 +0000
+++ b/main.cpp	Thu May 02 11:33:20 2019 +0000
@@ -1,16 +1,20 @@
 #include "mbed.h"
- 
+  
+
 // Definition des variables : moteur
-PwmOut moteur1(D10); 
-PwmOut moteur2(D9);
-DigitalOut Trig(D12);
-InterruptIn reception(D8);
+PwmOut moteur1(D10); //On déclare la 1ère broche PWM pour la relier au moteur pour ainsi moduler la vitesse du moteur
+PwmOut moteur2(D9); //On déclare la 2ème broche PWM
+DigitalOut Trig(D12); //On déclare la broche qui va envoyer le signal à l'emetteur-recepteur d'ultrasons
+InterruptIn reception(D8); //On déclare notre broche d'interruption
+
+Serial pc(USBTX, USBRX); //On crée la connexion Pc-µchip pour afficher les résultats sur Teraterm
 
-Serial pc(USBTX, USBRX);
+Timer t2; //On déclarer le timer servant pour calculer la distance emetteur-objet
 
-Timer t2;
+double rc; //Variable compris entre 0 et 1 qui contrôlera le rapport cyclique du moteur
+float dist; //Variable qui nous permettra de calculer la distance voiture-objet
+float dist_securite; //Variable à laquelle on affectera la distance à respecter
 
-double rc;
 
 // Definition des variables : codeur
 InterruptIn ComptIncr(D7);
@@ -23,44 +27,31 @@
 float dt;
 int a;
 double v;
-float dist;
-float dist_securite;
+
 
 // Definition des fonctions : moteur
 
-void front_montant()
+void front_montant() //Fonction qui s'effectuera lorsque la broche D8 verra un front montant
 {
-    t2.start();
+    t2.start(); //On lance le timer
 }
 
-void front_descendant()
+void front_descendant()//Fonction qui s'effectuera lorsque la broche D8 verra un front descendant
 {
-    t2.stop();
-    tps3=t2.read();
-    dist=174.9*tps3;
- //   pc.printf("dist = %lf \r\n", dist);
-    t2.reset();
-  //  if (dist == 0.0000){ rc = 1;}
-   /* if (dist<=v*2){ rc = 0;}
-    if (dist<= v*3 && dist>v*2){ rc = 0.2;}
-    if (dist<= v*4 && dist>v*3){ rc = 0.4;}
-    if (dist<= v*5 && dist>v*4){ rc = 0.6;}
-    if (dist<= v*6 && dist>v*5){ rc = 0.8;}
-    if (dist >= v*6) { rc = 1; }*/
-    //if (dist<= dist_securite){rc = rc-rc/200;}
-    //if (dist> dist_securite){rc = rc+(rc+1)/200;}
-    //if (dist<=0.1) {rc = 0;}
-    rc= 1;
-    moteur2.write(rc);
+    t2.stop(); //On arrête le timer
+    tps3=t2.read(); //On affecte à tps3 la valeur du timer (temps entre le front montant et le front descendant)
+    dist=174.9*tps3; //On calcule la distance emetteur-objet et donc voiture-objet
+    t2.reset(); //On réinitialise le timer à 0
+    if (dist<= dist_securite){rc = rc-rc/200;} //On réduit petit à petit le rapport cyclique et par conséquent la vitesse du moteur jusqu'à respecter la distance minimale
+    //qu'il doit y avoir entre la voiture et de la voiture devant elle en fonction de la vitesse
+    if (dist> dist_securite){rc = rc+(rc+1)/200;} //Au contraire si on est au dessus de la distance de sécurité on va augmenter la vitesse de la voiture
+    if (dist<=0.1) {rc = 0;} //On arrête le moteur quand la distance est trop petit
+    moteur2.write(rc); //On applique le nouveau rapport cyclique au moteur et par conséquent la nouvelle vitesse
     
-  //  pc.printf("RC = %lf \r\n", rc);
+    
     
-} 
-
 // Definition des fonctions : codeur
 
-void vitesse();
-
 void vitesse(){
     if (a == 0){
         tps1 = t1.read(); 
@@ -78,46 +69,48 @@
     }  
 }    
 
+
+
 // Debut du main
 int main() 
 {
-    
-    
     // Initialisation Moteur
     t2.reset();
-    reception.rise(&front_montant);
-    reception.fall(&front_descendant);
-    moteur1.period_ms(10);
-    moteur2.period_ms(10);
-    moteur1.write(0);
-    moteur2.write(0);
-    pc.baud(9600);
+    reception.rise(&front_montant); //On dit d'effectuer la fonction front_montant lorsque la broche reception (D8) reçoit un front montant
+    reception.fall(&front_descendant); //On dit d'effectuer la fonction front_descendant lorsque la broche reception (D8) reçoit un front descendant
+    moteur1.period_ms(10); //On définit la période du signal envoyé au moteur1
+    moteur2.period_ms(10); //On définit la période du signal envoyé au moteur2
+    moteur1.write(0); // On initialise le rapport cyclique du moteur1 à 0
+    moteur2.write(0); // On initialise le rapport cyclique du moteur2 à 0
+    pc.baud(9600); //On définit le débit d'information envoyé de la µchip au PC
+    
     
     // Initialisation Codeur
     a = 0;
     dt = 0;
     t1.start();
-
     ComptIncr.rise(&vitesse);
     
+    
     // Debut du while
     while(1)
     {
         // Partie moteur
-        Trig = 1;
-        pc.printf("dist = %f \r\n", dist);
+        Trig = 1; //On envoie à 1 à l'emetteur à ultrasons pour qu'il envoie ensuite une impulsion d'ultrason 
+        //On affiche nos différent résultats sur Teraterm
+        pc.printf("dist = %f \r\n", dist); 
         pc.printf("RC = %lf \r\n", rc);
         pc.printf("v = %lf\n", v);
 
-        wait(0.001);
-        Trig =0 ; 
+        wait(0.001); //Il envoie l'impulsion pendant 1 ms
+        Trig =0 ; //On arrête l'impulsion pendant 1 ms
         wait(0.001);
 
     
         // Partie codeur
-        //printf("Compteur = %d\n", a);
-        //printf("Temps 1 = %f\n", tps1);
-        //printf("Temps 2 = %f\n", tps2);
-        //printf("Test temps 1 = %f\n", b);
+        printf("Compteur = %d\n", a);
+        printf("Temps 1 = %f\n", tps1);
+        printf("Temps 2 = %f\n", tps2);
+        printf("Test temps 1 = %f\n", b);
     }
 }
\ No newline at end of file