VRAC_HACKATHON / Mbed 2 deprecated FRC_2019_final

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
dagon
Date:
Sat Jun 08 08:51:07 2019 +0000
Parent:
12:09932ddcb089
Commit message:
strat antoine

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Sat Jun 08 02:29:30 2019 +0000
+++ b/main.cpp	Sat Jun 08 08:51:07 2019 +0000
@@ -18,7 +18,7 @@
 DigitalOut  led1        (PA_5);
 DigitalOut  led2        (PD_2);
 
-
+Timer timer;
 double              x, y, theta, vG, vD;
 
 
@@ -48,15 +48,14 @@
 void movement_linear(int speed, int relative_distance_mm)
 {
     double starting_traveled_distance = motor.getTraveledDistance_mm();
-    
+
     if (relative_distance_mm > 0.0f) {
         while (motor.getTraveledDistance_mm() - starting_traveled_distance < relative_distance_mm) {
             motor.setSpeed(speed,speed);
             motor.getPosition (&x,&y, &theta);
             motor.getSpeed (&vG, &vD);
         }
-    }
-    else {
+    } else {
         while (motor.getTraveledDistance_mm() - starting_traveled_distance > relative_distance_mm) {
             motor.setSpeed(-speed,-speed);
             motor.getPosition (&x,&y, &theta);
@@ -70,7 +69,8 @@
 //speed entre 0 et 1300
 //L'acceleration et la decelleration ne sont indispensab le qu'a partir des vitesses superieur a 300
 //calcul de la distance parcourue lors de l'acceleration: (speed/100)*acceleration_distance_mm [en mm]
-void movement_acceleration(int speed, int acceleration_distance_mm) {
+void movement_acceleration(int speed, int acceleration_distance_mm)
+{
     int acceleration_steps = speed / 100.0f;
     for (int i = 0; i < acceleration_steps ; i++) {
         movement_linear(100*(i+1), acceleration_distance_mm);
@@ -78,59 +78,132 @@
 }
 
 //speed entre 0 et 1300
-void movement_deceleration(int speed, int deceleration_distance_mm) {
+void movement_deceleration(int speed, int deceleration_distance_mm)
+{
     int acceleration_steps = speed / 100.0f;
     for (int i = acceleration_steps; i > 0 ; i--) {
         movement_linear(100*i, deceleration_distance_mm);
     }
 }
 
-void automate_evitemment(int speed, int seuil_face, int seuil_cote) {
+void end_game()
+{
+    motor.setSpeed(0, 0);
+    while (1) {
+        led1 = 1;
+        led2 = 0;
+        wait(0.3);
+        led1 = 0;
+        led2 = 1;
+        wait(0.3);
+    }
+}
+
+void automate_evitemment(int speed, int seuil_face, int seuil_cote)
+{
     motor.setSpeed(speed, speed);
-    
+
     double val_us_gauche = 0, val_us_face = 0, val_us_droite = 0;
     while (1) {
+        if (timer.read() > 80.0f)
+            end_game();
+
         if (UltraSon.isUSGReady()) val_us_gauche = UltraSon.readUSG();
         if (UltraSon.isUSBReady()) val_us_face = UltraSon.readUSB();
         if (UltraSon.isUSDReady()) val_us_droite = UltraSon.readUSD();
-        
+
         if (val_us_face < seuil_face)  {
             movement_rotate(speed, 80);
-        }
-        else if (val_us_gauche < seuil_cote) {
+        } else if (val_us_gauche < seuil_cote) {
             movement_rotate(speed, -40);
-        }
-        else if (val_us_droite < seuil_cote) {
+        } else if (val_us_droite < seuil_cote) {
             movement_rotate(speed, 40);
         }
-        
+
         motor.setSpeed(speed, speed);
         wait(0.005);
     }
 }
 
+
+
+
 main ()
 {
+    timer.start();
+
     motor.resetPosition();
     
-    automate_evitemment(400, 50, 40);
     
-    while (1);
+    /*movement_acceleration(1000, 100);
+    movement_linear(1000, 1850 - 100*10 - 100*10); //bas
+    movement_deceleration(1000, 100);*/
     
-    /*while (1) {
-        movement_acceleration(1300, 50);
-        movement_linear(1300, 1000);
-        movement_deceleration(1300, 30);
-        wait(0.5);
-        
-        movement_linear(300, 100);
-        
-        movement_rotate(200, 90);
-        wait(0.5);
-        
-        movement_acceleration(1300, -50);
-        movement_linear(1300, -1000);
-        movement_deceleration(1300, -30);
-        wait(0.5);
-    }*/
+    movement_linear(300, 1850); //bas
+    wait(0.5);
+
+    movement_rotate(200, -90);
+    wait(0.5);
+
+    movement_linear(300, 2275); //mid
+    wait(0.5);
+
+    /*movement_rotate(100, -47.5);
+    wait(0.5);
+
+    movement_linear(300, 2950); //mid
+    wait(0.5);*/
+
+    movement_rotate(100, -30);
+    wait(0.5);
+
+    movement_linear(300, 75); // riz
+    wait(0.25);
+
+    movement_rotate(100, 60);
+    wait(0.25);
+
+    movement_rotate(100, -60);
+    wait(0.25);
+
+    movement_linear(300, 75); // riz
+    wait(0.25);
+
+    movement_rotate(100, 60);
+    wait(0.25);
+
+    movement_rotate(100, -60);
+    wait(0.25);
+
+    movement_linear(300, 75); // riz
+    wait(0.25);
+
+    movement_rotate(100, 60);
+    wait(0.25);
+
+    movement_rotate(100, -60);
+    wait(0.25);
+
+    movement_linear(300, 75); // riz
+    wait(0.25);
+
+    movement_rotate(100, 60);
+    wait(0.25);
+
+    movement_rotate(100, -60);
+    wait(0.25);
+
+    movement_linear(300, 75); // riz
+    wait(0.25);
+
+    movement_rotate(100, 60);
+    wait(0.25);
+
+    movement_rotate(100, -30);
+    wait(0.25);
+
+    automate_evitemment(400, 50, 40);
+
+    while (1);
+
 }
\ No newline at end of file