FRC_equipe1 / Mbed 2 deprecated FRC_2019

Dependencies:   mbed

Revision:
32:84bcb8f2667a
Parent:
31:85d9fb71f921
Child:
33:c70ded6dd380
--- a/main.cpp	Fri Jun 07 09:47:52 2019 +0000
+++ b/main.cpp	Fri Jun 07 11:18:42 2019 +0000
@@ -3,14 +3,15 @@
 #include "Robot.h"
 #include "math.h"
 
-bool automate_aveugle(Robot&, bool&);
-void automate_ejecte(Robot&, bool&);
-void automate_testLasers(Robot&);
-void automate_testABalle(Robot&, bool&);
-void automate_deplacement(Robot&);
-void automate_vitesse(Robot&);
-bool automate_fin_de_partie(Robot&);
-bool automate_arretUrgence(Robot&);
+bool automate_aveugle(Robot&, bool&);       //automate de début de partie
+void automate_ejecte(Robot&, bool&);        //
+void automate_testLasers(Robot&);           //
+void automate_testABalle(Robot&, bool&);    //
+void automate_deplacement(Robot&);          //
+void automate_vitesse(Robot&);              //automate pour la vitesse du robot
+bool automate_fin_de_partie(Robot&);        //automate crève ballon de fin de partie
+bool automate_arretUrgence(Robot&);         //automate d'arrêt d'urgence au filet
+void automate_run(Robot&);                  //automate principale de partie
 
 typedef enum{TURN_FAST, CORRECT_GAUCHE, CORRECT_DROITE, GO_STRAIGHT} type_etat_deplacement;
 type_etat_deplacement etat_deplacement = TURN_FAST;
@@ -20,20 +21,19 @@
 {
     Robot robot;
     
-    bool ejecte = false;
-    
     while(1)
-    if(!Robot::Jack)
     {
+        automate_run(robot);
         // Trois balles en début de partie à l'aveugle
-        if( !automate_aveugle(robot, ejecte) );
+        
+        /*if( !automate_aveugle(robot, ejecte) );
         else if(automate_fin_de_partie(robot))
         {
             robot.stopRouleau();
             break;
         }
             
-        automate_ejecte(robot, ejecte);
+        automate_ejecte(robot, ejecte);*/
         
         // Gestion du lancer de balle
         /*automate_testABalle(robot, ejecte);
@@ -47,8 +47,38 @@
         // Gestion de la vitesse en fonction de l'état actuel
         automate_vitesse(robot);*/
     }
+}
+
+void automate_run(Robot& robot)
+{
+    bool ejecte = false;
+    typedef enum{ATTENTE,RUN} type_etat;
+    static type_etat etat = ATTENTE;
+    static Timer T_partie;
     
-    return 0;
+    switch(etat)
+    {
+        case ATTENTE:
+            if(!Robot::Jack)
+            {
+                T_partie.start();
+                etat = RUN;
+            }
+            break;
+        case RUN:
+            if(T_partie.read() < 35.0f)
+            {
+                /*while( !*/automate_aveugle(robot, ejecte)/* )*/;
+                automate_ejecte(robot, ejecte);
+            }
+            else
+            {
+                T_partie.stop();
+                robot.stopRouleau();
+                automate_fin_de_partie(robot);
+            }
+            break;
+    }
 }
 
 bool automate_fin_de_partie(Robot& robot)