FRC_equipe1 / Mbed 2 deprecated FRC_2019

Dependencies:   mbed

Revision:
28:82571fd665bf
Parent:
27:e103da412e2b
Child:
29:6bce50d6530c
Child:
30:ee3e274e4b55
diff -r e103da412e2b -r 82571fd665bf main.cpp
--- a/main.cpp	Thu Jun 06 14:22:58 2019 +0000
+++ b/main.cpp	Thu Jun 06 16:01:05 2019 +0000
@@ -2,6 +2,7 @@
 #include "CAN_asser.h"
 #include "Robot.h"
 
+bool automate_aveugle(Robot&);
 void automate_testLasers(Robot&);
 void automate_testABalle(Robot&);
 void automate_deplacement(Robot&);
@@ -20,6 +21,8 @@
     while(1)
     if(!Robot::Jack)
     {
+        while(!automate_aveugle(robot));
+        
         automate_testABalle(robot);
         
         automate_testLasers(robot);
@@ -31,6 +34,67 @@
     }
 }
 
+bool automate_aveugle(Robot& robot)
+{
+    typedef enum{STRAIGHT1, TOURNE_D, STRAIGHT2, TOURNE_G} type_etat;
+    static type_etat etat = STRAIGHT1;
+    
+    static Timer T_ejecte;
+    
+    switch(etat)
+    {
+        case STRAIGHT1:
+            robot.avance();
+            if(robot.aBalle())
+            {
+                robot.stop();
+                robot.ejecte();
+                etat = TOURNE_D;
+            }
+            else if( T_ejecte.read() >= 1.0f )
+            {
+                robot.gobe();
+                T_ejecte.stop();
+                T_ejecte.reset();
+            }
+            break;
+            
+        case TOURNE_D:
+            if( T_ejecte.read() >= 1.0f )
+            {
+                robot.gobe();
+                T_ejecte.stop();
+                T_ejecte.reset();
+            }
+                
+            if(robot.tourne(900))
+                etat = STRAIGHT2;
+            break;
+            
+        case STRAIGHT2:
+            robot.avance();
+            if(robot.aBalle())
+            {
+                robot.stop();
+                etat = TOURNE_G;
+            }
+            break;
+            
+        case TOURNE_G:
+            if(robot.tourne(-900))
+                robot.ejecte();
+                
+            if(!robot.aBalle())
+            {
+                T_ejecte.start();
+                etat = TOURNE_D;
+            } 
+            break;
+    }
+    
+    return false;
+}
+
 
 void automate_testLasers(Robot& robot)
 {   
@@ -81,13 +145,12 @@
             if(robot.aBalle())
             {
                 robot.stop();
-                robot.exploseBallon();
                 etat = ABALLE;
                 robot.setSpeed(80,500); //vitesse de rotation vers le terrain ennemi
             }
             else if( T_ejecte.read() >= 1.0f )
             {
-                robot.gobe(25);
+                robot.gobe();
                 T_ejecte.stop();
                 T_ejecte.reset();
             }
@@ -95,11 +158,10 @@
             
         case ABALLE:
             if(robot.tourne(1800))
-                robot.ejecte(70);
+                robot.ejecte();
                 
             if(!robot.aBalle())
             {
-                robot.arreteDisquette();
                 T_ejecte.start();
                 etat = ATTENTE;
                 etat_deplacement = TURN_FAST;