From d94cedd6e24fd5ef4942c59c50af3d1c50458ce5 Mon Sep 17 00:00:00 2001 From: Samuel Date: Thu, 29 May 2025 12:12:36 +0200 Subject: [PATCH] Match 1 --- Cerveau/Cerveau.ino | 55 +++++++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/Cerveau/Cerveau.ino b/Cerveau/Cerveau.ino index b9f4362..8e80474 100644 --- a/Cerveau/Cerveau.ino +++ b/Cerveau/Cerveau.ino @@ -438,39 +438,48 @@ void IHM_attente_match(int * couleur){ enum etat_action_t Strategie(int couleur){ static enum { + STRAT_INIT, // On attend de ne pas voir la tirette dans la detection de l'adversaire STRAT_RECULE_BANDEROLE, // Deplacement relatif STRAT_ALLER_GRADINS_1_A, // Déplacement relatif STRAT_ALLER_GRADINS_1_B, // Cherche gradin STRAT_ALLER_GRADINS_1_C, // Déplacement relatif STRAT_DEPOSE_GRADIN_1A, // Empile gradin STRAT_DEPOSE_GRADIN_1B, // Recule du gradin - STRAT_ALLER_PREPA_BACKSTAGE, // Déplacement absolu - STRAT_ALLER_BACKSTAGE // Déplacement relatif + STRAT_ALLER_PREPA_BACKSTAGE, // Déplacement relaif + STRAT_ATTENTE_BACKSTAGE, // Attente + STRAT_ALLER_BACKSTAGE, // Déplacement relatif + STRAT_FIN }etat_strategie = STRAT_RECULE_BANDEROLE; enum etat_action_t etat_action; int translation_x_mm, translation_y_mm; + static unsigned long temps_timer; float rotation_rad; switch(etat_strategie){ + case STRAT_INIT: + temps_timer = millis(); + break; case STRAT_RECULE_BANDEROLE: - // Déplacement en X - translation_x_mm = -300; - translation_y_mm = 0; - rotation_rad = 0; - etat_action = deplacement_relatif(translation_x_mm, translation_y_mm, rotation_rad, 1); - if(etat_action == ACTION_TERMINEE){ - etat_strategie = STRAT_ALLER_GRADINS_1_A; + if(millis() - temps_timer > 300){ + // Déplacement en X + translation_x_mm = -300; + translation_y_mm = 0; + rotation_rad = 0; + etat_action = deplacement_relatif(translation_x_mm, translation_y_mm, rotation_rad, 1); + if(etat_action == ACTION_TERMINEE){ + etat_strategie = STRAT_ALLER_GRADINS_1_A; + } } break; case STRAT_ALLER_GRADINS_1_A: - translation_x_mm = -500; + translation_x_mm = -450; rotation_rad = 0; if(couleur == COULEUR_JAUNE){ - translation_y_mm = -500; + translation_y_mm = -450; }else{ - translation_y_mm = 500; + translation_y_mm = 450; } etat_action = deplacement_relatif(translation_x_mm, translation_y_mm, rotation_rad, 1); if(etat_action == ACTION_TERMINEE){ @@ -480,7 +489,7 @@ enum etat_action_t Strategie(int couleur){ case STRAT_ALLER_GRADINS_1_B: etat_action = gradin_approche(); - if(etat_action == ACTION_TERMINEE){ + if(etat_action == ACTION_TERMINEE || etat_action == ACTION_ECHEC){ etat_strategie = STRAT_ALLER_GRADINS_1_C; } break; @@ -511,22 +520,31 @@ enum etat_action_t Strategie(int couleur){ case STRAT_ALLER_PREPA_BACKSTAGE: if(couleur == COULEUR_JAUNE){ - etat_action = deplacement_absolu(550, 1150, M_PI/2., 0); + etat_action = deplacement_relatif(0, 0, 165. / 180 * M_PI, 0); }else{ - etat_action = deplacement_absolu(3000 - 550, 1150, M_PI/2., 0); + etat_action = deplacement_relatif(0, 0, -165. / 180 * M_PI, 0); } if(etat_action == ACTION_TERMINEE){ + etat_strategie = STRAT_ATTENTE_BACKSTAGE; + } + break; + + case STRAT_ATTENTE_BACKSTAGE: + if (millis() - temps_timer > 95000){ etat_strategie = STRAT_ALLER_BACKSTAGE; } break; case STRAT_ALLER_BACKSTAGE: - etat_action = deplacement_relatif(500, 0, 0, 0); + etat_action = deplacement_relatif(1140, 0, 0, 0); if(etat_action == ACTION_TERMINEE){ - etat_strategie = STRAT_RECULE_BANDEROLE; - return ACTION_TERMINEE; + etat_strategie = STRAT_FIN; } break; + + case STRAT_FIN: + return ACTION_TERMINEE; + break; } return ACTION_EN_COURS; @@ -610,7 +628,6 @@ enum etat_action_t gradin_approche(void){ case GA_GOTO_EN_FACE: case GA_GOTO_LARGE: - Detect_gradin(&detect_gradin); if(detect_gradin.status != 2){ nb_erreur++; if(nb_erreur > 100){