Programme course fonctionnel Jour J Croisement non pris en charge (tourne en rond)

Dependencies:   MMA8451Q mbed

Fork of Programme_course_30Tr by Freescale_Cachan

Files at this revision

API Documentation at this revision

Comitter:
leandre
Date:
Fri Mar 24 09:29:12 2017 +0000
Parent:
4:8b0215ec788f
Commit message:
Prog fonctionnel Jour J; Croisement ? r?gler

Changed in this revision

Mlib.cpp Show annotated file Show diff for this revision Revisions of this file
Mlib.h Show annotated file Show diff for this revision Revisions of this file
shield.cpp Show annotated file Show diff for this revision Revisions of this file
traitement_image.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Mlib.cpp	Wed Mar 22 14:41:20 2017 +0000
+++ b/Mlib.cpp	Fri Mar 24 09:29:12 2017 +0000
@@ -159,8 +159,8 @@
         moy_mem_b=Moyenne2(tab_mem_b, TAILLE_TAB_INT);
         
         //pc.printf("%d\n",moy_inter);
-        if(S1&&(arr!=0))                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           {//delai apres l'arret
-            if (t_debut.read_ms()-arr>200)VIT=0;
+        if(S1&&(arr!=0)){//delai apres l'arret
+            if (t_debut.read_ms()-arr>250)VIT=0;
             }
         else if((moy_mem_a>20)&&(moy_mem_b>20)){  // si la voiture n'est pas trop sur l'exterieur de la piste
             if(S1 && (moy_inter<75) && (moy_inter>50)){  //si l'espace entre les deux lignes est plus petit que la normale (arret)
@@ -168,7 +168,7 @@
                 //for(int i=0;i<5;i++)  pc.printf("%d ",Interval[i]);
                 //pc.printf("\n");
                 //VIT=0;
-                //pc.printf("\narret ");
+                pc.printf("\narret ");
                 //pc.printf("\n%d ",moy_inter);
                 led1=1;
                 led2=1;
--- a/Mlib.h	Wed Mar 22 14:41:20 2017 +0000
+++ b/Mlib.h	Fri Mar 24 09:29:12 2017 +0000
@@ -6,7 +6,7 @@
 #include "mbed.h"
 #include "MMA8451Q.h"
 #include "motor.h"
-
+        
 #define MMA8451_I2C_ADRESS (0x1d<<1)
 
 #define FRQ_CLK 15000
@@ -15,7 +15,7 @@
 #define BMIDTAB 63
 #define BANDSIZE 4
 #define MIN_INTE 0
-#define MAX_INTE FRQ_CYC-400//500
+#define MAX_INTE FRQ_CYC-500
 #define INCREM_BALANCE 300
 #define MARGE_LIGNE 5
 #define MARGE_DISTANCE_LIGNE 10
@@ -32,6 +32,7 @@
 #define VITESSE 40
 
 #define TAILLE_TAB_INT 5
+#define SEUIL_INT_VIR 50
 /***********************FONCTIONS**********************/
 /**/     /****************CAMERA****************/   /**/
 /**/    void F_GetData();                           /**/
--- a/shield.cpp	Wed Mar 22 14:41:20 2017 +0000
+++ b/shield.cpp	Fri Mar 24 09:29:12 2017 +0000
@@ -7,7 +7,7 @@
 {
     vitesse_virage = new_bari/2;
     
-    ajust_vitesse = ajust_vit_bosse +((ligne_droite*5)/2);-ajust_vit_vir;
+    ajust_vitesse = ajust_vit_bosse +((ligne_droite*5)/2)-ajust_vit_vir;
     
     pc.printf("%hi\n", ajust_vit_bosse);
     
@@ -68,7 +68,7 @@
     for(int i = 0; i < 10; i++)
     {
        VIT += ((pot1.read()+1)*(25.0));
-        KP += ((pot2.read()+1)*100); 
+        KP += ((pot2.read()+1)*75); 
     }
     VIT /= 10;
     pc.printf("VIT=%d\nKP=%d\n",VIT,KP);                                    //ici
--- a/traitement_image.cpp	Wed Mar 22 14:41:20 2017 +0000
+++ b/traitement_image.cpp	Fri Mar 24 09:29:12 2017 +0000
@@ -52,6 +52,7 @@
     }
     
     Interval[0] = mem_a+mem_b;
+    //pc.printf("mem_a=%d   mem_b=%d",mem_a,mem_b);
     if (mem_b == 100 && mem_a == 100)  // pas de ligne
     {
         ajust_vit_vir=0;
@@ -59,28 +60,41 @@
     }
     else if (mem_b == 100)   //pas de ligne à gauche
     {                       //si la ligne est vers le milieu on ne modifie pas le baricentre et on ralenti
-        //baricentre = (mem_a-MARGE_DISTANCE_LIGNE);
-        ajust_vit_vir=20;
-        if(mem_a>45){
+        
+        ajust_vit_vir=40;
+        //ralentire=1;
+        if(mem_a>SEUIL_INT_VIR){
             baricentre = (64-mem_a);
-            ajust_vit_vir=0;
+            if (baricentre>25){
+                ajust_vit_vir=40;
+            }
+            else ajust_vit_vir=20;
         }
     }
     else if (mem_a == 100)     // pas de ligne à droite
     {                          //si la ligne est vers le milieu on ne modifie pas le baricentre et on ralenti
-        //baricentre = (MARGE_DISTANCE_LIGNE-mem_b);
-        ajust_vit_vir=20;  
-        if(mem_b>45){
+        
+        ajust_vit_vir=40; 
+         
+        if(mem_b>SEUIL_INT_VIR){
             baricentre = (64-mem_b);
-            ajust_vit_vir=0;
+            if (baricentre>25){
+                ajust_vit_vir=40;
+            }
+            else ajust_vit_vir=20;
         }
         
     }
     else
     {
-        ajust_vit_vir=0;
-        baricentre = (mem_b - mem_a);    
-        //baricentre = -baricentre;
+        
+        baricentre = (mem_b - mem_a);  
+          
+        if (baricentre>20){
+            ajust_vit_vir=20;
+            }
+        else ajust_vit_vir=0;
+        
     }
 } 
 
@@ -95,53 +109,6 @@
 }
 
 
-/*void Gestion_bosse()
-{
-    if(BOSSE_ACTIVE)//Si on active la détection de la bosse
-    {
-        static int tep = 0;
-        switch(bosse)
-        {
-            case 0:
-            led1 = 1;
-            led2 = 0;
-            break;
-            case 1:
-            led2 = 1;
-            led1= 0;
-            break;
-            case 2:
-            led3 = 1;
-            led2 = 0;
-            break;
-        }
-    
-        
-        last_three[2] = last_three[1];
-        last_three[1] = last_three[0];
-        last_three[0] = acc.getAccX();
-        
-        if(bosse == 1)
-        ajust_vitesse = 20;
-        else if(bosse == 2)
-        ajust_vitesse = -10;
-        else ajust_vitesse = 0;
-        
-        if((middle_3F(last_three) > 0.2 ) && (bosse == 0 && t_debut.read() > 2))
-        {
-            bosse = 1;
-            tep = (int)t_debut.read_ms();
-        }
-        else if(bosse == 1 && (int)t_debut.read_ms() > (tep+1000))
-        {
-            bosse = 2;
-        }
-        else if(bosse == 2 && middle_3F(last_three) > 0.98)
-        {
-            bosse = 3;
-        }
-    }
-}*/
 
 void T_image()
 {
@@ -164,7 +131,7 @@
     //pc.printf("%d  ",new_bari);
     last_bari = bari_bis;
     
-    led4 = ralentire;
+    //led4 = ralentire;
     if(S3)//gestion des lignes droite
     {
         if(abs(new_bari) < 15 && ligne_droite < 10 && ralentire == 0)