m

Revision:
1:785b37686185
Parent:
0:a89fe490343e
Child:
2:e0402d1e9ed5
diff -r a89fe490343e -r 785b37686185 Strategie.cpp
--- a/Strategie.cpp	Mon May 20 23:04:57 2019 +0000
+++ b/Strategie.cpp	Fri May 24 21:45:02 2019 +0000
@@ -1,8 +1,9 @@
 #include "Strategie.h"
 
 char bufferScore[3]={'0','0','0'}; 
-//extern I2CSlave i2c;
+
 bool typeMovement = DEPLACEMENT_AVANT;
+bool typeEvitement = ARRET;
 
 extern int distanceUltrasonGauche;
 extern int distanceUltrasonDroit;
@@ -18,6 +19,10 @@
 extern bool stopCapteurs;
 
 
+Timeout tempsArretMvt;
+
+
+
 void updateAndWriteScore(char n1, char n2, char n3)
 {
     bufferScore[0] = n1;
@@ -50,6 +55,124 @@
     }
 }
 
+void arretSystem()
+{
+    Pompe pompe(PIN_POMPE);
+    Demarreur demarreur(PIN_DEMARREUR);
+    Bras brasGauche(PIN_SERVO_BRAS_GAUCHE, GAUCHE);
+    Bras brasDroit(PIN_SERVO_BRAS_DROIT, DROIT);
+    BrasPousser brasPousserGauche(PIN_SERVO_PALETS_GAUCHE, GAUCHE);
+    BrasPousser brasPousserDroit(PIN_SERVO_PALETS_DROIT,DROIT);
+    deplacement robot;
+    
+    robot.initialisation();
+    robot.arreterRobot();
+    pompe.desactiver();
+}
+
+void strategieHomologationViolet(deplacement robot, Pompe pompe, Demarreur demarreur, Bras brasGauche, Bras brasDroit, BrasPousser brasPousserGauche,  BrasPousser brasPousserDroit)
+{
+    write(bufferScore);
+    Timer tempsMatch; // timer en seconde
+    int etapeMatch = 0;
+    while(demarreur.getState() == false)
+    {
+        //on attend
+        //pc.printf("On attend le depart du Robot Thanos\n\r");
+    }
+    tempsArretMvt.attach(&arretSystem, TEMPSMATCH);
+    lancerTimerEcran();
+    tempsMatch.start();
+    typeEvitement = ARRET;
+    while(tempsMatch  <= TEMPSMATCH)
+    {   
+        switch (etapeMatch) {
+
+            case 0 : /* On tourne pour aller vers le terrain adverse et on avance jusqu'au milieu du terrain */ 
+            {
+                typeMovement = DEPLACEMENT_AVANT;
+                robot.rotation_rel(90);
+                robot.ligne_droite_basique(127500);
+                etapeMatch++;
+                
+            break;
+            }
+            case 1 : /* On se met en position pour pousser les palets */ 
+            {
+                robot.rotation_rel(90);
+                robot.ligne_droite_basique(60000);
+                robot.rotation_rel(90);
+                brasPousserDroit.activerBras();
+                brasPousserGauche.activerBras();
+                etapeMatch++;
+            
+            break;
+            }
+            case 2 : /* On pousse la zone de chaos dans les cases */ 
+            {
+                robot.ligne_droite_basique(110000);
+                updateAndWriteScore('0', '1', '0');
+                etapeMatch++;
+            
+            break;
+            }
+            case 3 : /* On se met en position pour faire des rectangles */ 
+            {
+                typeMovement = DEPLACEMENT_ARRIERE;
+                robot.marche_arriere(-10000);
+                brasPousserDroit.desactiverBras();
+                brasPousserGauche.desactiverBras();
+                etapeMatch++;
+            
+            break;
+            }
+            case 4 : /* On fait un rectangle arriere  */ 
+            {
+                
+                robot.marche_arriere(-50000);
+                robot.rotation_rel(-90);
+                robot.marche_arriere(-50000);
+                robot.rotation_rel(-90);
+                robot.marche_arriere(-50000);
+                robot.rotation_rel(-90);
+                robot.marche_arriere(-50000);
+                //robot.rotation_rel(180);
+                etapeMatch++;
+            
+            break;
+            }
+            case 5 : /* On pousse le palet vert ou le vert et les deux bleus dans la balance en passant par la pente */ 
+            {
+                typeMovement = DEPLACEMENT_AVANT;
+                robot.ligne_droite_basique(50000);
+                robot.rotation_rel(90);
+                robot.ligne_droite_basique(50000);
+                robot.rotation_rel(90);
+                robot.ligne_droite_basique(50000);
+                robot.rotation_rel(90);
+                robot.ligne_droite_basique(50000);
+                robot.rotation_rel(90);
+                etapeMatch++;
+            
+            break;
+            }
+            
+            default:
+            {
+                robot.vitesse_nulle_D(0);
+                robot.vitesse_nulle_G(0);
+                motors_stop();
+            }
+        }  
+    }
+    
+    //Arrêter les moteurs
+    robot.vitesse_nulle_D(0);
+    robot.vitesse_nulle_G(0);
+    motors_stop();
+    while(1);
+}
+
 void strategieClassiqueViolet(deplacement robot, Pompe pompe, Demarreur demarreur, Bras brasGauche, Bras brasDroit, BrasPousser brasPousserGauche,  BrasPousser brasPousserDroit)
 {
     write(bufferScore);
@@ -60,6 +183,7 @@
         //on attend
         //pc.printf("On attend le depart du Robot Thanos\n\r");
     }
+    tempsArretMvt.attach(&arretSystem, TEMPSMATCH);
     lancerTimerEcran();
     tempsMatch.start();
     while(tempsMatch  <= TEMPSMATCH)
@@ -69,7 +193,7 @@
             case 0 : /* On active l'expérience */ 
             {
                 typeMovement = DEPLACEMENT_AVANT;
-                robot.ligne_droite(25000);
+                robot.ligne_droite_basique(25000);
                 robot.poussette(300);
                 updateAndWriteScore('0', '4', '0');
                 etapeMatch++;
@@ -82,9 +206,9 @@
                 robot.marche_arriere(-11200);
                 typeMovement = DEPLACEMENT_AVANT;
                 robot.rotation_rel(90);
-                robot.ligne_droite(130000);
+                robot.ligne_droite_basique(130000);
                 brasDroit.activerBras();
-                robot.ligne_droite(16000);
+                robot.ligne_droite_basique(16000);
                 brasDroit.desactiverBras();
                 updateAndWriteScore('0', '5', '0');
                 etapeMatch++;
@@ -93,7 +217,7 @@
             }
             case 2 : /* On récupère le goldenium */ 
             {
-                robot.ligne_droite(54500);
+                robot.ligne_droite_basique(54500);
                 robot.rotation_rel(-90);
                 pompe.activer();
                 robot.poussette(1000);
@@ -109,9 +233,9 @@
             {
                 
                 robot.rotation_rel(-90);
-                robot.ligne_droite(97000);
+                robot.ligne_droite_basique(97000);
                 robot.rotation_rel(-90);
-                robot.ligne_droite(104000);
+                robot.ligne_droite_basique(104000);
                 robot.poussette(1000);
                 pompe.desactiver();
                 wait(2);
@@ -128,7 +252,7 @@
                 robot.rotation_rel(135);
                 brasPousserGauche.activerBras();
                 brasPousserDroit.activerBras();
-                robot.ligne_droite(112500);
+                robot.ligne_droite_basique(112500);
                 updateAndWriteScore('1', '2', '4');
                 etapeMatch++;
             
@@ -142,9 +266,9 @@
                 robot.marche_arriere(-8000);
                 typeMovement = DEPLACEMENT_AVANT;
                 robot.rotation_rel(-90);
-                robot.ligne_droite(45000);
+                robot.ligne_droite_basique(45000);
                 robot.rotation_rel(-42);
-                robot.ligne_droite(86000);
+                robot.ligne_droite_basique(86000);
                 robot.rotation_rel(-90);
                 brasPousserGauche.activerBras();
                 brasPousserDroit.activerBras();
@@ -205,6 +329,7 @@
         //on attend
         //pc.printf("On attend le depart du Robot Thanos\n\r");
     }
+    tempsArretMvt.attach(&arretSystem, 100.0);
     lancerTimerEcran();
     tempsMatch.start();
     while(tempsMatch  <= TEMPSMATCH)
@@ -213,7 +338,7 @@
 
             case 0 : /* On active l'expérience */ 
             {
-                robot.ligne_droite(25000);
+                robot.ligne_droite_basique(25000);
                 robot.poussette(300);
                 updateAndWriteScore('0', '4', '0');
                 etapeMatch++;
@@ -224,9 +349,9 @@
             {
                 robot.marche_arriere(-11200);
                 robot.rotation_rel(-90);
-                robot.ligne_droite(130000);
+                robot.ligne_droite_basique(130000);
                 brasDroit.activerBras();
-                robot.ligne_droite(16000);
+                robot.ligne_droite_basique(16000);
                 brasDroit.desactiverBras();
                 updateAndWriteScore('0', '5', '0');
                 etapeMatch++;
@@ -235,7 +360,7 @@
             }
             case 2 : /* On récupère le goldenium */ 
             {
-                robot.ligne_droite(54500);
+                robot.ligne_droite_basique(54500);
                 robot.rotation_rel(90);
                 pompe.activer();
                 robot.poussette(1000);
@@ -249,9 +374,9 @@
             {
                 
                 robot.rotation_rel(90);
-                robot.ligne_droite(96000);
+                robot.ligne_droite_basique(96000);
                 robot.rotation_rel(90);
-                robot.ligne_droite(104000);
+                robot.ligne_droite_basique(104000);
                 robot.poussette(1000);
                 pompe.desactiver();
                 wait(2);
@@ -267,7 +392,7 @@
                 robot.rotation_rel(-135);
                 brasPousserGauche.activerBras();
                 brasPousserDroit.activerBras();
-                robot.ligne_droite(112500);
+                robot.ligne_droite_basique(112500);
                 updateAndWriteScore('1', '2', '4');
                 etapeMatch++;