sequences des strats
Diff: Strategie.cpp
- Revision:
- 7:392aa81893eb
- Parent:
- 6:db41c3f7245e
- Child:
- 8:55fe932fd696
--- a/Strategie.cpp Wed May 29 21:06:45 2019 +0000 +++ b/Strategie.cpp Thu May 30 03:00:55 2019 +0000 @@ -1,10 +1,11 @@ #include "Strategie.h" -char bufferScore[3]={'0','0','0'}; +char bufferScore[3]= {'0','0','0'}; bool typeMovement = DEPLACEMENT_AVANT; int typeEvitement = ARRET; +extern bool finActions; extern int distanceUltrasonGauche; extern int distanceUltrasonDroit; extern int distanceUltrasonArriere; @@ -34,370 +35,125 @@ void LectureI2CCarteCapteur(deplacement robot) { traitementBufferCapteurs(); - if(AnalyseDistance(distanceUltrasonGauche, distanceUltrasonDroit, distanceUltrasonArriere, typeMovement) == ROBOT) - { - if( ((distanceUltrasonGauche <= 300) || (distanceUltrasonDroit <= 300)) && (typeMovement == DEPLACEMENT_AVANT) ) - { - stopCapteurs = true; - } - else if ( (distanceUltrasonArriere <= 300) && (typeMovement == DEPLACEMENT_ARRIERE) ) - { - stopCapteurs = true; - } - else - { - stopCapteurs = false; - } - } - else - { - stopCapteurs = false; + if(AnalyseDistance(distanceUltrasonGauche, distanceUltrasonDroit, distanceUltrasonArriere, typeMovement) == ROBOT) { + if( ((distanceUltrasonGauche <= 300) || (distanceUltrasonDroit <= 300)) && (typeMovement == DEPLACEMENT_AVANT) ) { + stopCapteurs = true; + } else if ( (distanceUltrasonArriere <= 300) && (typeMovement == DEPLACEMENT_ARRIERE) ) { + stopCapteurs = true; + } else { + stopCapteurs = false; + } + } else { + stopCapteurs = false; } } 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(); } /*---------Debut Strategie homologation violet ------------------------------------------------------*/ -void strategieHomologationViolet(deplacement robot, Pompe pompe, Demarreur demarreur, Bras brasGauche, Bras brasDroit, BrasPousser brasPousserGauche, BrasPousser brasPousserDroit) +void strategieHomologationViolet(deplacement robot, Demarreur demarreur) { write(bufferScore); Timer tempsMatch; // timer en seconde int etapeMatch = 0; - while(demarreur.getState() == false) - { + while(demarreur.getState() == false) { //on attend //pc.printf("On attend le depart du Robot Thanos\n\r"); } tempsArretMvt.attach(&arretSystem, TEMPSMATCH); + initViolet(); robot.initialisation(); lancerTimerEcran(); tempsMatch.start(); typeEvitement = ARRET; - while(tempsMatch <= TEMPSMATCH) - { + while(tempsMatch <= TEMPSMATCH) { + if(finActions == true) + { + etapeMatch++; + finActions = false; + } switch (etapeMatch) { - case 0 : /* On tourne pour aller vers le terrain adverse et on avance jusqu'au milieu du terrain */ - { + case 0 : { /* On tourne pour aller vers le terrain adverse et on avance jusqu'au milieu du terrain */ + typeMovement = DEPLACEMENT_AVANT; robot.ligne_droite_basique(3000); robot.rotation_rel(90); //robot.ligne_droite_basique(127500); etapeMatch++; - - break; - } - case 1 : /* On se met en position pour pousser les palets */ - { - robot.va_au_point(158000,22500,0); - brasDroit.activerBras(); - robot.ligne_droite_basique(11000); - brasDroit.desactiverBras(); - /*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.va_au_point(220000,60000,90); - robot.ligne_droite_basique(60000); - 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.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; + + break; + + default: { + robot.vitesse_nulle_D(0); + robot.vitesse_nulle_G(0); + motors_stop(); + } } - 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); } - - //Arrêter les moteurs - robot.vitesse_nulle_D(0); - robot.vitesse_nulle_G(0); - motors_stop(); - while(1); } - /*-------Fin Stratégie homologation violet------------------------------------------------------------*/ /*-------Debut Strategie homologation jaune-----------------------------------------------------------*/ -void strategieHomologationJaune(deplacement robot, Pompe pompe, Demarreur demarreur, Bras brasGauche, Bras brasDroit, BrasPousser brasPousserGauche, BrasPousser brasPousserDroit) +void strategieHomologationJaune(deplacement robot, Demarreur demarreur) { write(bufferScore); Timer tempsMatch; // timer en seconde int etapeMatch = 0; - while(demarreur.getState() == false) - { + while(demarreur.getState() == false) { //on attend //pc.printf("On attend le depart du Robot Thanos\n\r"); } tempsArretMvt.attach(&arretSystem, TEMPSMATCH); + initJaune(); robot.initialisation(); lancerTimerEcran(); tempsMatch.start(); typeEvitement = ARRET; - while(tempsMatch <= TEMPSMATCH) - { + while(tempsMatch <= TEMPSMATCH) { switch (etapeMatch) { - case 0 : /* On tourne pour aller vers le terrain adverse et on avance jusqu'au milieu du terrain */ - { + case 0 : { /* On tourne pour aller vers le terrain adverse et on avance jusqu'au milieu du terrain */ typeMovement = DEPLACEMENT_AVANT; robot.ligne_droite_basique(3000); robot.rotation_rel(-90); //robot.ligne_droite_basique(127500); etapeMatch++; - - break; - } - case 1 : /* On se met en position pour pousser les palets */ - { - robot.va_au_point(300000-158000,22500,180); - brasDroit.activerBras(); - robot.ligne_droite_basique(11000); - brasDroit.desactiverBras(); - /*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.va_au_point(300000-220000,60000,90); - robot.ligne_droite_basique(60000); - 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.ligne_droite_basique(110000); - updateAndWriteScore('0', '1', '0'); - etapeMatch++; - - break; + + 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: - { + 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); - /*while(tempsMatch <= TEMPSMATCH) - { - switch (etapeMatch) { - - - case 0 : // On tourne pour aller vers le terrain adverse et on avance jusqu'au milieu du terrain - { - 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 - { - 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 - { - 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);*/ } /*Fin Strategie homologation jaune -------------------------------------------------------------------*/ @@ -406,137 +162,45 @@ /*Debut Strategie classique violet -------------------------------------------------------------------*/ -void strategieClassiqueViolet(deplacement robot, Pompe pompe, Demarreur demarreur, Bras brasGauche, Bras brasDroit, BrasPousser brasPousserGauche, BrasPousser brasPousserDroit) +void strategieClassiqueViolet(deplacement robot, Demarreur demarreur) { write(bufferScore); Timer tempsMatch; // timer en seconde int etapeMatch = 0; - while(demarreur.getState() == false) - { + while(demarreur.getState() == false) { //on attend //pc.printf("On attend le depart du Robot Thanos\n\r"); } tempsArretMvt.attach(&arretSystem, TEMPSMATCH); + initViolet(); robot.initialisation();//check si modif lancerTimerEcran(); tempsMatch.start(); typeEvitement = ARRET; - while(tempsMatch <= TEMPSMATCH) - { + while(tempsMatch <= TEMPSMATCH) { switch (etapeMatch) { - case 0 : /* On active l'expérience */ - { + case 0 : { /* On active l'expérience */ typeMovement = DEPLACEMENT_AVANT; robot.ligne_droite_basique(26500); robot.poussette(300); updateAndWriteScore('0', '4', '0'); etapeMatch++; - - break; - } - case 1 : /* On pousse le palet bleu de la pente de l'accélérateur */ - { - typeMovement = DEPLACEMENT_ARRIERE; - robot.marche_arriere(-11200); - typeMovement = DEPLACEMENT_AVANT; - /*robot.rotation_rel(90); - robot.ligne_droite_basique(130000);*/ - robot.va_au_point(158000,23000,0); - brasDroit.activerBras(); - robot.ligne_droite_basique(11000); - brasDroit.desactiverBras(); - updateAndWriteScore('0', '5', '0'); - etapeMatch++; - - break; - } - case 2 : /* On récupère le goldenium */ - { - robot.va_au_point(220000,30000,-90); - //robot.ligne_droite_basique(54500); - //robot.rotation_rel(-90); - pompe.activer(); - robot.poussette(1500); - typeMovement = DEPLACEMENT_ARRIERE; - robot.marche_arriere(-10000); - typeMovement = DEPLACEMENT_AVANT; - updateAndWriteScore('0', '8', '0'); - etapeMatch++; - - break; + + break; } - case 3 : /* On met le goldenium dans la balance */ - { - typeEvitement = ARRET; - robot.va_au_point(130700,116000,90); - robot.ligne_droite_basique(15000); - /*robot.rotation_rel(-90); - robot.ligne_droite_basique(93000); - robot.rotation_rel(-90); - robot.ligne_droite_basique(104000);*/ - robot.poussette(1500); - pompe.desactiver(); - wait(2); - updateAndWriteScore('1', '0', '4'); - etapeMatch++; - - break; - } - case 4 : /* On pousse la zone de chaos dans la zone du redium */ - { - typeMovement = DEPLACEMENT_ARRIERE; - robot.marche_arriere(-8000); - typeMovement = DEPLACEMENT_AVANT; - robot.rotation_abs(-134); - brasPousserGauche.activerBras(); - brasPousserDroit.activerBras(); - robot.ligne_droite_basique(116000); - updateAndWriteScore('1', '2', '4'); - etapeMatch++; - - break; - } - case 5 : /* On pousse le palet vert ou le vert et les deux bleus dans la balance en passant par la pente */ - { - brasPousserGauche.desactiverBras(); - brasPousserDroit.desactiverBras(); - typeMovement = DEPLACEMENT_ARRIERE; - robot.marche_arriere(-8000); - typeMovement = DEPLACEMENT_AVANT; - robot.va_au_point(15000,176000,0); - robot.ligne_droite_basique(5000); - brasPousserGauche.activerBras(); - brasPousserDroit.activerBras(); - etapeMatch++; - - break; - } - case 6 : /* On redescant de la pente */ - { - robot.pente_combo(-90, brasPousserGauche,brasPousserDroit,pompe); - updateAndWriteScore('1', '3', '4'); - robot.vitesse_nulle_D(0); - robot.vitesse_nulle_G(0); - etapeMatch++; - - break; - } - default: - { + default: { robot.vitesse_nulle_D(0); robot.vitesse_nulle_G(0); motors_stop(); - pompe.desactiver(); } - } + } } - + //Arrêter les moteurs robot.vitesse_nulle_D(0); robot.vitesse_nulle_G(0); motors_stop(); - pompe.desactiver(); while(1); } @@ -547,137 +211,45 @@ /*------- Debut Strategie classique Jaune -----------------------------------------------*/ -void strategieClassiqueJaune(deplacement robot, Pompe pompe, Demarreur demarreur, Bras brasGauche, Bras brasDroit, BrasPousser brasPousserGauche, BrasPousser brasPousserDroit) +void strategieClassiqueJaune(deplacement robot, Demarreur demarreur) { write(bufferScore); Timer tempsMatch; // timer en seconde int etapeMatch = 0; - while(demarreur.getState() == false) - { + while(demarreur.getState() == false) { //on attend //pc.printf("On attend le depart du Robot Thanos\n\r"); } tempsArretMvt.attach(&arretSystem, 100.0); + initJaune(); robot.initialisation(); lancerTimerEcran(); tempsMatch.start(); typeEvitement = ARRET; - while(tempsMatch <= TEMPSMATCH) - { + while(tempsMatch <= TEMPSMATCH) { switch (etapeMatch) { - case 0 : /* On active l'expérience */ - { + case 0 : { /* On active l'expérience */ typeMovement = DEPLACEMENT_AVANT; robot.ligne_droite_basique(26500); robot.poussette(300); updateAndWriteScore('0', '4', '0'); etapeMatch++; - - break; - } - case 1 : /* On pousse le palet bleu de la pente de l'accélérateur */ - { - typeMovement = DEPLACEMENT_ARRIERE; - robot.marche_arriere(-11200); - typeMovement = DEPLACEMENT_AVANT; - /*robot.rotation_rel(90); - robot.ligne_droite_basique(130000);*/ - robot.va_au_point(300000-158000,23000,180); - brasGauche.activerBras(); - robot.ligne_droite_basique(14000); - brasGauche .desactiverBras(); - updateAndWriteScore('0', '5', '0'); - etapeMatch++; - - break; - } - case 2 : /* On récupère le goldenium */ - { - robot.va_au_point(300000-220000,30000,-90); - //robot.ligne_droite_basique(54500); - //robot.rotation_rel(-90); - pompe.activer(); - robot.poussette(1500); - typeMovement = DEPLACEMENT_ARRIERE; - robot.marche_arriere(-10000); - typeMovement = DEPLACEMENT_AVANT; - updateAndWriteScore('0', '8', '0'); - etapeMatch++; - - break; + + break; } - case 3 : /* On met le goldenium dans la balance */ - { - typeEvitement = ARRET; - robot.va_au_point(300000-130700,116000,90); - robot.ligne_droite_basique(15000); - /*robot.rotation_rel(-90); - robot.ligne_droite_basique(93000); - robot.rotation_rel(-90); - robot.ligne_droite_basique(104000);*/ - robot.poussette(1500); - pompe.desactiver(); - wait(2); - updateAndWriteScore('1', '0', '4'); - etapeMatch++; - - break; - } - case 4 : /* On pousse la zone de chaos dans la zone du redium */ - { - typeMovement = DEPLACEMENT_ARRIERE; - robot.marche_arriere(-8000); - typeMovement = DEPLACEMENT_AVANT; - robot.rotation_abs(-44); - brasPousserGauche.activerBras(); - brasPousserDroit.activerBras(); - robot.ligne_droite_basique(116000); - updateAndWriteScore('1', '2', '4'); - etapeMatch++; - - break; - } - case 5 : /* On pousse le palet vert ou le vert et les deux bleus dans la balance en passant par la pente */ - { - brasPousserGauche.desactiverBras(); - brasPousserDroit.desactiverBras(); - typeMovement = DEPLACEMENT_ARRIERE; - robot.marche_arriere(-8000); - typeMovement = DEPLACEMENT_AVANT; - robot.va_au_point(300000-15000,176000,180); - robot.ligne_droite_basique(5000); - brasPousserGauche.activerBras(); - brasPousserDroit.activerBras(); - etapeMatch++; - - break; - } - case 6 : /* On redescant de la pente */ - { - robot.pente_combo(180, brasPousserGauche,brasPousserDroit,pompe); - updateAndWriteScore('1', '3', '4'); - robot.vitesse_nulle_D(0); - robot.vitesse_nulle_G(0); - etapeMatch++; - - break; - } - default: - { + default: { robot.vitesse_nulle_D(0); robot.vitesse_nulle_G(0); motors_stop(); - pompe.desactiver(); } - } + } } - + //Arrêter les moteurs robot.vitesse_nulle_D(0); robot.vitesse_nulle_G(0); motors_stop(); - pompe.desactiver(); while(1); } @@ -687,17 +259,17 @@ /*--------- Debut Strategie RCVA violet ----------------------------------------------*/ -void strategieRCVAViolet(deplacement robot, Pompe pompe, Demarreur demarreur, Bras brasGauche, Bras brasDroit, BrasPousser brasPousserGauche, BrasPousser brasPousserDroit) +void strategieRCVAViolet(deplacement robot, Demarreur demarreur) { write(bufferScore); Timer tempsMatch; // timer en seconde int etapeMatch = 0; - while(demarreur.getState() == false) - { + while(demarreur.getState() == false) { //on attend //pc.printf("On attend le depart du Robot Thanos\n\r"); } tempsArretMvt.attach(&arretSystem, TEMPSMATCH); + initViolet(); robot.initialisation(); lancerTimerEcran(); tempsMatch.start(); @@ -710,17 +282,17 @@ /*-------- Debut Strategie RCVA jaune -----------------------------------------------*/ -void strategieRCVAJaune(deplacement robot, Pompe pompe, Demarreur demarreur, Bras brasGauche, Bras brasDroit, BrasPousser brasPousserGauche, BrasPousser brasPousserDroit) +void strategieRCVAJaune(deplacement robot, Demarreur demarreur) { write(bufferScore); Timer tempsMatch; // timer en seconde int etapeMatch = 0; - while(demarreur.getState() == false) - { + while(demarreur.getState() == false) { //on attend //pc.printf("On attend le depart du Robot Thanos\n\r"); } tempsArretMvt.attach(&arretSystem, TEMPSMATCH); + initJaune(); robot.initialisation(); lancerTimerEcran(); tempsMatch.start(); @@ -732,17 +304,17 @@ /*-------- Debut Strategie humiliation violet ---------------------------------------*/ -void strategieHumiliationViolet(deplacement robot, Pompe pompe, Demarreur demarreur, Bras brasGauche, Bras brasDroit, BrasPousser brasPousserGauche, BrasPousser brasPousserDroit) +void strategieHumiliationViolet(deplacement robot, Demarreur demarreur) { write(bufferScore); Timer tempsMatch; // timer en seconde int etapeMatch = 0; - while(demarreur.getState() == false) - { + while(demarreur.getState() == false) { //on attend //pc.printf("On attend le depart du Robot Thanos\n\r"); } tempsArretMvt.attach(&arretSystem, TEMPSMATCH); + initViolet(); robot.initialisation(); lancerTimerEcran(); tempsMatch.start(); @@ -755,17 +327,17 @@ /*-------- Debut Strategie humiliation jaune ----------------------------------------*/ -void strategieHumiliationJaune(deplacement robot, Pompe pompe, Demarreur demarreur, Bras brasGauche, Bras brasDroit, BrasPousser brasPousserGauche, BrasPousser brasPousserDroit) +void strategieHumiliationJaune(deplacement robot, Demarreur demarreur) { write(bufferScore); Timer tempsMatch; // timer en seconde int etapeMatch = 0; - while(demarreur.getState() == false) - { + while(demarreur.getState() == false) { //on attend //pc.printf("On attend le depart du Robot Thanos\n\r"); } tempsArretMvt.attach(&arretSystem, TEMPSMATCH); + initJaune(); robot.initialisation(); lancerTimerEcran(); tempsMatch.start();