Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: main.cpp
- Revision:
- 28:82571fd665bf
- Parent:
- 27:e103da412e2b
- Child:
- 29:6bce50d6530c
- Child:
- 30:ee3e274e4b55
--- 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;