Prog Thib Ju

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
MaxLaMenace
Date:
Thu May 09 14:34:14 2019 +0000
Parent:
3:f56ec086a122
Commit message:
fusion final commente

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r f56ec086a122 -r b00081eecde0 main.cpp
--- a/main.cpp	Thu May 02 11:33:20 2019 +0000
+++ b/main.cpp	Thu May 09 14:34:14 2019 +0000
@@ -1,116 +1,110 @@
 #include "mbed.h"
-  
+
 
 // Definition des variables : moteur
-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
+
+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);        //On crée la connexion Pc-µchip pour afficher les résultats sur Teraterm
 
-Timer t2; //On déclarer le timer servant pour calculer la distance emetteur-objet
+Timer t2;                       //On déclarer le timer servant pour calculer la distance emetteur-objet
 
-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;                      //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
+float tps3;                     //Variable de lecture de temps
 
 
-// Definition des variables : codeur
-InterruptIn ComptIncr(D7);
+// Definition des variables : codeur incrémentale
 
-Timer t1;
+InterruptIn ComptIncr(D7);      //Broche d'interruption permettant le comptage de front montant du codeur incrémentale 
+
+Timer t1;                       //Timer pour connaître le temps qu'a mis la roue pour faire un tour
 
-float tps1;
-float tps2;
-float tps3;
-float dt;
-int a;
-double v;
+float tps1;                     //Variable servant de zéro pour la mesure de temps d'un tour de roue
+float tps2;                     //Variable servant de stop pour la mesure de temps d'un tour de roue
+float dt;                       //Variable de stockage du calcul de l'intervalle de temps (tps2 - tps1)
+int a;                          //Variable correspondant au nombre de front montant
+double v;                       //Variable de stockage pour le calcul de la vitesse des roues
 
 
 // Definition des fonctions : moteur
 
-void front_montant() //Fonction qui s'effectuera lorsque la broche D8 verra un front montant
+void front_montant()            //Fonction qui s'effectuera lorsque la broche D8 verra un front montant
 {
-    t2.start(); //On lance le timer
+    t2.start();                 //On lance le timer
 }
 
-void front_descendant()//Fonction qui s'effectuera lorsque la broche D8 verra un front descendant
+void front_descendant()         //Fonction qui s'effectuera lorsque la broche D8 verra un front descendant
 {
-    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
-    
-    
+    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)   //On réduit petit à petit le rapport cyclique et par conséquent la vitesse du moteur jusqu'à respecter la distance minimale
+        {rc = rc-rc/200;}       //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)              //On arrête le moteur quand la distance est trop petit
+        {rc = 0;}
+    moteur2.write(rc);          //On applique le nouveau rapport cyclique au moteur et par conséquent la nouvelle vitesse
+}   
     
-// Definition des fonctions : codeur
+// Définition des fonctions : codeur incrémentale
 
-void vitesse(){
-    if (a == 0){
-        tps1 = t1.read(); 
-        }
-    a++;
-    if (a == 8) {
-        tps2 = t1.read();
-        dt = tps2 - tps1;
-        v = 0.0201056/dt; // (8/25)*2*pi*4.5 cm de rayon
-       // pc.printf("v = %lf\n", v);
-       // pc.printf("dt = %f\n", 1/dt);
-        a = 0;
-        dist_securite = 6*v;
-        //printf("Vitesse = %f tours/s\n", 10/t.read());
+void vitesse()
+{
+    if (a == 0)                 //On s'assure que l'on compte bien chaque front montant du codeur   
+        {tps1 = t1.read();}     //On mesure le zéro pour le départ d'un tour de roue       
+    a++;                        //La fonction est une boucle d'interruption donc si elle s'active cela signifie qu'un front montant est apparue
+    if (a == 8){                //Une fois le compteur de front montant arrivé à 8, on calcule la vitesse du véhicule
+        tps2 = t1.read();       //Mesure du temps qui s'est écoulé depuis tps1
+        dt = tps2 - tps1;       //Calcul de l'intervalle de temps 
+        v = 0.0201056/dt;       //Calcul de la vitesse (v=d/t) avec comme distance d : (8/25)*2*pi*R avec R = 4.5cm et car un tour correspond à 25 fronts montants
+        a = 0;                  //Remise à zéro du compteur
+        dist_securite = 6*v;    //Critère de distance à respecter : 6 x la vitesse
     }  
 }    
 
 
+// Début de la fonction principale
 
-// Debut du main
 int main() 
 {
     // Initialisation Moteur
     t2.reset();
-    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
+    reception.rise(&front_montant); //On dit d'effectuer la fonction front_montant lorsque la broche de réception (D8) reçoit un front montant
+    reception.fall(&front_descendant); //On dit d'effectuer la fonction front_descendant lorsque la broche de réception (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);
+    a = 0;                      //Mise à zéro du compteur de front montant
+    dt = 0;                     //Mise à zéro de l'intervalle de temps pour le comptage de front montant 
+    t1.start();                 //Démarage du timer
+    ComptIncr.rise(&vitesse);   //Appel de la fonction vitesse à chaque front montant détecté sur la broche de réception (D7)
     
     
-    // Debut du while
+    // Début de la boucle
     while(1)
     {
         // Partie moteur
-        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);
+        Trig = 1;               //On envoie à 1 à l'emetteur à ultrasons pour qu'il envoie ensuite une impulsion d'ultrason 
+        
+        //On affiche nos différents résultats sur Teraterm
+        pc.printf("dist = %f \r\n", dist);  //Distance avec le véhicule devant nous ou l'obstacle
+        pc.printf("RC = %lf \r\n", rc);     //Rapport cyclique appliqué au moteur
+        pc.printf("v = %lf\n", v);          //Vitesse du véhicule
 
         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);
     }
 }
\ No newline at end of file