librairie actions gros robot carte esclave

Dependents:   carte_esclave201_petit_rob carte_esclave2019 carte_esclave_PETIT_ROBOT_2019

Revision:
10:fba0699b7a74
Parent:
9:05da4300730a
Child:
11:dfff2e200d0c
diff -r 05da4300730a -r fba0699b7a74 actions_Gr.cpp
--- a/actions_Gr.cpp	Sat May 25 17:47:38 2019 +0000
+++ b/actions_Gr.cpp	Sat May 25 18:39:49 2019 +0000
@@ -62,7 +62,7 @@
             pos = getPos(stockage_G,1);
             if(previous_pos != pos){
                 etat = etalonnage;
-                //pc.printf("ETALONNAGE\n");
+                pc.printf("ETALONNAGE\n");
             }
             break;
 
@@ -74,7 +74,7 @@
                 pos = getPos(stockage_G,1) ;
                 positionControl(stockage_G,pos+180,1,BLED_ON,1);
                 etat = tmp_pret;
-                //pc.printf("TMP_PRET\n");
+                pc.printf("TMP_PRET\n");
             }
             break;
         
@@ -83,7 +83,7 @@
             pos = getPos(stockage_G,1) ;
             if(pos> (previous_pos-5)){
                 etat = pret; 
-                //pc.printf("PRET\n");         
+                pc.printf("PRET\n");         
             } 
             break;
             
@@ -95,7 +95,7 @@
                 positionControl(stockage_G,pos,1,BLED_ON,1);
                 previous_pos = pos;
                 etat = pousse;
-                //pc.printf("POUSSE\n");
+                pc.printf("POUSSE\n");
             }
             break;
             
@@ -108,7 +108,7 @@
                 positionControl(stockage_G,pos,1,BLED_ON,1);
                 previous_pos = pos;
                 etat = retour;
-                //pc.printf("RETOUR\n");
+                pc.printf("RETOUR\n");
             }
                 
             break;
@@ -116,7 +116,7 @@
             pos = getPos(stockage_G,1) ;
             if(pos> (previous_pos-5)){
                 etat = pret; 
-                //pc.printf("PRET\n");         
+                pc.printf("PRET\n");         
             } 
             break;
     }   
@@ -134,6 +134,7 @@
             
         case init : 
             velocityControl(stockage_D,512,BLED_ON,3);
+                wait_us(500);
             pos = getPos(stockage_D,3);
             if(previous_pos != pos){
                 etat = etalonnage;
@@ -149,6 +150,7 @@
                 pos = getPos(stockage_D,3) ;
                 //positionControl(stockage_D,pos-2000,1,BLED_ON,3);
                 compteTour(stockage_D,-1023,2,(pos-500),BLED_ON,3);
+                wait_us(500);
                 etat = tmp_pret;
                 //pc.printf("TMP_PRET\n");
             }
@@ -157,6 +159,7 @@
         case tmp_pret :
             previous_pos = pos;
             pos = getPos(stockage_D,3) ;
+                wait_us(500);
             if(pos> (previous_pos+5)){
                 etat = pret; 
                 //pc.printf("PRET\n");         
@@ -170,6 +173,7 @@
                 deverouillage_torque_convoyeurs_droit();
                 wait_us(500);
                 positionControl(stockage_D,pos,1,BLED_ON,3);
+                wait_us(500);
                 previous_pos = pos;
                 etat = pousse;
                 //pc.printf("POUSSE\n");
@@ -178,12 +182,14 @@
             
         case pousse :
             pos = getPos(stockage_D,3);
+                wait_us(500);
             if(pos>(previous_pos-5) and (status_contact & MASK_CT_DROIT)==0){   
                 //pc.printf("%d\n",pos);
                 pos = pos - 550;        
                 deverouillage_torque_convoyeurs_droit();
                 wait_us(500);
                 positionControl(stockage_D,pos,1,BLED_ON,3);
+                wait_us(500);
                 previous_pos = pos;
                 etat = retour;
                 //pc.printf("RETOUR\n");
@@ -193,6 +199,7 @@
         
         case retour :
             pos = getPos(stockage_D,3) ;
+                wait_us(500);
             if(pos< (previous_pos+5)){
                 etat = pret; 
                 //pc.printf("PRET\n");         
@@ -213,10 +220,12 @@
             
         case init : 
             velocityControl(stockage_G,-512,BLED_ON,1);
+                wait_us(500);
             pos = getPos(stockage_G,1);
+                wait_us(500);
             if(previous_pos != pos){
                 etat = etalonnage;
-                pc.printf("ETALONNAGE\n");
+               // pc.printf("ETALONNAGE\n");
             }
             break;
 
@@ -227,15 +236,18 @@
                 velocityControl(stockage_G,0,GLED_ON,1);
                 wait_ms(500);
                 pos = getPos(stockage_G,1) ;
+                wait_us(500);
                 compteTour(stockage_G,1023,2,(pos+500),BLED_ON,1);
+                wait_us(500);
                 previous_pos = pos;
                 etat = tmp_pret;
-                pc.printf("TMP_PRET\n");
+                ////pc.printf("TMP_PRET\n");
             }
             break;
         
         case tmp_pret :
             pos = getPos(stockage_G,1) ;
+                wait_us(500);
             if(pos> (previous_pos-5)){
                 etat = pret; 
                 pc.printf("PRET\n");         
@@ -246,32 +258,37 @@
             if((status_contact & MASK_CT_GAUCHE)){
                 //pc.printf("%d\n",pos);
                 pos = getPos(stockage_G,1)- 550;
+                wait_us(500);
                 deverouillage_torque_convoyeurs_gauche();
                 wait_us(500);
                 positionControl(stockage_G,pos,1,BLED_ON,1);
+                wait_us(500);
                 previous_pos = pos;
                 etat = pousse;
-                pc.printf("POUSSE\n");
+                //pc.printf("POUSSE\n");
             }
             break;
             
         case pousse :
             pos = getPos(stockage_G,1);
+                wait_us(500);
             if(pos<(previous_pos+5) and (status_contact & MASK_CT_GAUCHE)==0){   
-                //pc.printf("%d\n",pos);
+                pc.printf("%d\n",pos);
                 pos = pos + 550;        
                 deverouillage_torque_convoyeurs_gauche();
                 wait_us(500);
                 positionControl(stockage_G,pos,1,BLED_ON,1);
+                wait_us(500);
                 previous_pos = pos;
                 etat = retour;
-                pc.printf("RETOUR\n");
+                //pc.printf("RETOUR\n");
             }
                 
             break;
         
         case retour :
             pos = getPos(stockage_G,1) ;
+                wait_us(500);
             if(pos> (previous_pos-5)){
                 etat = pret; 
                 pc.printf("PRET\n");         
@@ -292,65 +309,76 @@
             
         case init : 
             velocityControl(stockage_D,+512,BLED_ON,3);
+                wait_us(500);
             pos = getPos(stockage_D,3);
+                wait_us(500);
             if(previous_pos != pos){
-                pc.printf("ETALONNAGE\n");
+                //pc.printf("ETALONNAGE\n");
                 etat = etalonnage;
             }
             break;
 
         case etalonnage :
             pos = getPos(stockage_D,3);
-            pc.printf("%d\n", pos);
+                wait_us(500);
+            //pc.printf("%d\n", pos);
             if(pos>900 and (status_contact & MASK_FC_DROIT)){ 
                 velocityControl(stockage_D,0,GLED_ON,3);
                 wait_ms(500);
                 pos = getPos(stockage_D,3) ;
+                wait_us(500);
                 positionControl(stockage_D,pos-180,1,BLED_ON,3);
+                wait_us(500);
                 previous_pos = pos;
                 etat = tmp_pret;
-                pc.printf("TMP_PRET\n");
+               // pc.printf("TMP_PRET\n");
             }
             break;
         
         case tmp_pret :  
             pos = getPos(stockage_D,3) ;
+                wait_us(500);
             if(pos< (previous_pos+5)){
                 etat = pret; 
-                pc.printf("PRET\n");         
+                //pc.printf("PRET\n");         
             } 
             break;
             
         case pret : 
             if((status_contact & MASK_CT_DROIT)){
                 pos = getPos(stockage_D,3)- 550;
+                wait_us(500);
                 deverouillage_torque_convoyeurs_droit();
                 wait_us(500);
                 positionControl(stockage_D,pos,1,BLED_ON,3);
+                wait_us(500);
                 previous_pos = pos;
                 etat = pousse;
-                pc.printf("POUSSE\n");
+                //pc.printf("POUSSE\n");
             }
             break;
             
         case pousse :
             pos = getPos(stockage_D,3);
+                wait_us(500);
             if(pos<(previous_pos+5) and (status_contact & MASK_CT_DROIT)==0){   
                 pos = pos + 550;        
                 deverouillage_torque_convoyeurs_droit();
                 wait_us(500);
                 positionControl(stockage_D,pos,1,BLED_ON,3);
+                wait_us(500);
                 previous_pos = pos;
                 etat = retour;
-                pc.printf("RETOUR\n");
+                //pc.printf("RETOUR\n");
             }
                 
             break;
         case retour :
             pos = getPos(stockage_D,3) ;
+                wait_us(500);
             if(pos> (previous_pos-5)){
                 etat = pret; 
-                pc.printf("PRET\n");         
+                //pc.printf("PRET\n");         
             } 
             break;
     }   
@@ -367,7 +395,7 @@
     deverouillage_torque();
     positionControl_Mul_ensemble_complex(2,speed,servos_av_centre, pos_av_centre,2);
     wait(0.5);
-    positionControl(doigt,POS_DOIGT_DROIT,100,BLED_ON,2);
+    
 
 }
 
@@ -385,11 +413,6 @@
                 buffer_couleur_bas[FIFO_couleur_ecriture] = etat_cap; //1 = bleu, 2 = rouge/ vert
                 flag_ascenseur = 1;
                 if(FIFO_couleur_ecriture == FIFO_couleur_lecture) {
-                   /* if(buffer_couleur_bas[FIFO_couleur_ecriture] == 1) {
-                        positionControl(doigt,384,10,BLED_ON,2);   //position herkulex stockage bleu
-                    } else {
-                        positionControl(doigt,640,10,GLED_ON,2);   //position herkulex stockage rouge/vert
-                    }*/
                     oriente_doigt(buffer_couleur_bas[FIFO_couleur_ecriture]);
                 }
                 
@@ -397,13 +420,6 @@
                 etat = tmp;
             }
             break;
-/*
-        case atome : //on stocke dans la fifo la couleur de l'atome
-            buffer_couleur_bas[FIFO_couleur_ecriture] = etat_cap; //1 = bleu, 2 = rouge/ vert
-            flag_ascenseur = 1;
-            FIFO_couleur_ecriture=(FIFO_couleur_ecriture+1)%SIZE_FIFO;
-            etat = tmp;
-            break;*/
 
         case tmp : //on attend que l'atome traité soit totalement passé
             if(!etat_cap) {
@@ -440,19 +456,25 @@
                 oriente_doigt(etat_cap);
                 etat = tmp;
             }
-            
-            /*if(buffer_couleur_bas[FIFO_couleur_lecture] != 0) {
-                oriente_doigt(buffer_couleur_bas[FIFO_couleur_lecture]);
-                etat = tmp;
-            }else if(etat_cap !=  0) {
-                etat = tmp;
+            /*else if(FIFO_couleur_lecture == FIFO_couleur_ecriture)
+            {
+                oriente_doigt((FIFO_couleur_lecture-1)%SIZE_FIFO);
             }*/
             break;
 
         case tmp :
             //on attend que le capteur soit totalement passé pour déplacer le pointeur de lecture
             if(etat_cap == 0) {
+                char memo_FIFO_couleur_lecture = FIFO_couleur_lecture;
                 FIFO_couleur_lecture=(FIFO_couleur_lecture+1)%SIZE_FIFO;
+                if(FIFO_couleur_lecture == FIFO_couleur_ecriture)
+                {
+                    pc.printf("Fifo vide\n");
+                    if(buffer_couleur_bas[memo_FIFO_couleur_lecture] == 1)
+                        oriente_doigt(2);
+                    else if(buffer_couleur_bas[memo_FIFO_couleur_lecture] == 2)
+                        oriente_doigt(1);
+                }
                 etat = atome;
             }
             break;