sequences des strats
Diff: Strategie.cpp
- Revision:
- 1:785b37686185
- Parent:
- 0:a89fe490343e
- Child:
- 2:e0402d1e9ed5
--- 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++;