This commit is contained in:
Samuel 2023-05-20 03:41:02 +02:00
parent 060fb3414a
commit 0e45582a6b
5 changed files with 24 additions and 12 deletions

View File

@ -7,6 +7,7 @@
uint32_t Score_nb_cerises=0; uint32_t Score_nb_cerises=0;
uint32_t Score_nb_points=0; uint32_t Score_nb_points=0;
uint32_t Score_funny_action=0; uint32_t Score_funny_action=0;
uint32_t Score_gateau=0;
uint32_t Score_pieds_dans_plat=0; uint32_t Score_pieds_dans_plat=0;
void Score_recalcule(){ void Score_recalcule(){
@ -16,6 +17,7 @@ void Score_recalcule(){
} }
Score_nb_points += Score_funny_action; Score_nb_points += Score_funny_action;
Score_nb_points += Score_pieds_dans_plat; Score_nb_points += Score_pieds_dans_plat;
Score_nb_points += Score_gateau;
} }
@ -24,6 +26,12 @@ void Score_actualise(){
i2c_annexe_envoie_score(Score_nb_points); i2c_annexe_envoie_score(Score_nb_points);
} }
void Score_ajout_gateau(uint32_t nb_gateau){
Score_gateau += nb_gateau;
Score_actualise();
}
void Score_set_funny_action(){ void Score_set_funny_action(){
Score_funny_action = 5; Score_funny_action = 5;
Score_actualise(); Score_actualise();

View File

@ -2,4 +2,5 @@
void Score_set_funny_action(); void Score_set_funny_action();
void Score_set_pieds_dans_plat(); void Score_set_pieds_dans_plat();
void Score_ajout_cerise(uint32_t nb_cerises); void Score_ajout_cerise(uint32_t nb_cerises);
void Score_ajout_gateau(uint32_t nb_gateau);

View File

@ -97,7 +97,7 @@ void Strategie(enum couleur_t couleur, uint32_t step_ms, uint32_t temps_ms){
if(couleur == COULEUR_BLEU){ if(couleur == COULEUR_BLEU){
Localisation_set(225., 3000 - PETIT_RAYON_ROBOT_MM, (120.+CORR_ANGLE_DEPART_DEGREE) * DEGRE_EN_RADIAN); Localisation_set(225., 3000 - PETIT_RAYON_ROBOT_MM, (120.+CORR_ANGLE_DEPART_DEGREE) * DEGRE_EN_RADIAN);
struct objectif_t objectif_1 = { .priorite = 10, .etat = FAIT, .cible = CERISE_BAS}; struct objectif_t objectif_1 = { .priorite = 10, .etat = FAIT, .cible = CERISE_BAS};
struct objectif_t objectif_2 = { .priorite = 1, .etat = FAIT, .cible = CERISE_HAUT}; struct objectif_t objectif_2 = { .priorite = 1, .etat = A_FAIRE, .cible = CERISE_HAUT};
struct objectif_t objectif_3 = { .priorite = 2, .etat = A_FAIRE, .cible = CERISE_GAUCHE}; struct objectif_t objectif_3 = { .priorite = 2, .etat = A_FAIRE, .cible = CERISE_GAUCHE};
struct objectif_t objectif_4 = { .priorite = 5, .etat = FAIT, .cible = CERISE_DROITE}; struct objectif_t objectif_4 = { .priorite = 5, .etat = FAIT, .cible = CERISE_DROITE};
objectifs[0]= objectif_1; objectifs[0]= objectif_1;
@ -107,7 +107,7 @@ void Strategie(enum couleur_t couleur, uint32_t step_ms, uint32_t temps_ms){
}else{ }else{
Localisation_set(2000 - 225., 3000 - PETIT_RAYON_ROBOT_MM, (120.+CORR_ANGLE_DEPART_DEGREE) * DEGRE_EN_RADIAN); Localisation_set(2000 - 225., 3000 - PETIT_RAYON_ROBOT_MM, (120.+CORR_ANGLE_DEPART_DEGREE) * DEGRE_EN_RADIAN);
struct objectif_t objectif_1 = { .priorite = 10, .etat = FAIT, .cible = CERISE_BAS}; struct objectif_t objectif_1 = { .priorite = 10, .etat = FAIT, .cible = CERISE_BAS};
struct objectif_t objectif_2 = { .priorite = 1, .etat = FAIT, .cible = CERISE_HAUT}; struct objectif_t objectif_2 = { .priorite = 1, .etat = A_FAIRE, .cible = CERISE_HAUT};
struct objectif_t objectif_3 = { .priorite = 2, .etat = A_FAIRE struct objectif_t objectif_3 = { .priorite = 2, .etat = A_FAIRE
, .cible = CERISE_DROITE}; , .cible = CERISE_DROITE};
struct objectif_t objectif_4 = { .priorite = 5, .etat = FAIT, .cible = CERISE_GAUCHE}; struct objectif_t objectif_4 = { .priorite = 5, .etat = FAIT, .cible = CERISE_GAUCHE};
@ -201,6 +201,7 @@ void Strategie(enum couleur_t couleur, uint32_t step_ms, uint32_t temps_ms){
if(couleur == COULEUR_BLEU){ if(couleur == COULEUR_BLEU){
if(Strategie_aller_cerises_laterales_proches(couleur, step_ms)== ACTION_TERMINEE){ if(Strategie_aller_cerises_laterales_proches(couleur, step_ms)== ACTION_TERMINEE){
etat_strategie = ATTRAPER_CERISE_GAUCHE; etat_strategie = ATTRAPER_CERISE_GAUCHE;
Score_ajout_gateau(3);
} }
}else{ }else{
if(Strategie_aller_cerises_laterales_opposees(couleur, step_ms)== ACTION_TERMINEE){ if(Strategie_aller_cerises_laterales_opposees(couleur, step_ms)== ACTION_TERMINEE){
@ -225,6 +226,7 @@ void Strategie(enum couleur_t couleur, uint32_t step_ms, uint32_t temps_ms){
} }
}else{ }else{
if(Strategie_aller_cerises_laterales_proches(couleur, step_ms)== ACTION_TERMINEE){ if(Strategie_aller_cerises_laterales_proches(couleur, step_ms)== ACTION_TERMINEE){
Score_ajout_gateau(3);
etat_strategie = ATTRAPER_CERISE_DROITE; etat_strategie = ATTRAPER_CERISE_DROITE;
} }
} }
@ -286,6 +288,7 @@ void Strategie(enum couleur_t couleur, uint32_t step_ms, uint32_t temps_ms){
break; break;
case RETOUR_MAISON: case RETOUR_MAISON:
i2c_annexe_plie_bras();
if(Strategie_pieds_dans_plat(couleur, step_ms) == ACTION_TERMINEE){ if(Strategie_pieds_dans_plat(couleur, step_ms) == ACTION_TERMINEE){
// Si le robot est dans la zone du panier, jeter les cerises s'il en a // Si le robot est dans la zone du panier, jeter les cerises s'il en a
if(Strategie_get_cerise_dans_robot() > 0 && Robot_est_dans_zone_depose_panier(couleur)){ if(Strategie_get_cerise_dans_robot() > 0 && Robot_est_dans_zone_depose_panier(couleur)){

View File

@ -23,7 +23,7 @@ enum etat_action_t Gateau_pousse_proche(enum couleur_t couleur, uint32_t step_ms
angle_fin = 90. * DEGRE_EN_RADIAN; angle_fin = 90. * DEGRE_EN_RADIAN;
point_x = 310; point_x = 310;
}else{ }else{
angle_fin = 195. * DEGRE_EN_RADIAN; angle_fin = 205. * DEGRE_EN_RADIAN;
point_x = 1700; point_x = 1700;
} }
angle_fin = Geometrie_get_angle_optimal(Localisation_get().angle_radian, angle_fin); angle_fin = Geometrie_get_angle_optimal(Localisation_get().angle_radian, angle_fin);
@ -40,16 +40,16 @@ enum etat_action_t Gateau_pousse_proche(enum couleur_t couleur, uint32_t step_ms
case ALLER_2: case ALLER_2:
if(couleur == COULEUR_BLEU){ if(couleur == COULEUR_BLEU){
angle_fin = 180. * DEGRE_EN_RADIAN; angle_fin = 90. * DEGRE_EN_RADIAN;
point_x = 225; point_x = 310;
}else{ }else{
angle_fin = 180. * DEGRE_EN_RADIAN; angle_fin = 205. * DEGRE_EN_RADIAN;
point_x = 1775; point_x = 1700;
} }
angle_fin = Geometrie_get_angle_optimal(Localisation_get().angle_radian, angle_fin); angle_fin = Geometrie_get_angle_optimal(Localisation_get().angle_radian, angle_fin);
Trajet_config(250, 250); Trajet_config(250, 250);
Trajectoire_droite(&trajectoire, Localisation_get().x_mm, Localisation_get().y_mm, point_x, 3000 - 1650, Trajectoire_droite(&trajectoire, Localisation_get().x_mm, Localisation_get().y_mm, point_x, 3000 - 1700,
Localisation_get().angle_radian, angle_fin); Localisation_get().angle_radian, angle_fin);
if(parcourt_trajet_simple(trajectoire, step_ms) == ACTION_TERMINEE){ if(parcourt_trajet_simple(trajectoire, step_ms) == ACTION_TERMINEE){
@ -69,7 +69,7 @@ enum etat_action_t Gateau_pousse_proche(enum couleur_t couleur, uint32_t step_ms
angle_fin = Geometrie_get_angle_optimal(Localisation_get().angle_radian, angle_fin); angle_fin = Geometrie_get_angle_optimal(Localisation_get().angle_radian, angle_fin);
Trajet_config(250, 250); Trajet_config(250, 250);
Trajectoire_droite(&trajectoire, Localisation_get().x_mm, Localisation_get().y_mm, point_x, 3000 - 1500, Trajectoire_droite(&trajectoire, Localisation_get().x_mm, Localisation_get().y_mm, point_x, 3000 - 1600,
Localisation_get().angle_radian, angle_fin); Localisation_get().angle_radian, angle_fin);
if(parcourt_trajet_simple(trajectoire, step_ms) == ACTION_TERMINEE){ if(parcourt_trajet_simple(trajectoire, step_ms) == ACTION_TERMINEE){

View File

@ -43,7 +43,7 @@ enum etat_action_t cerises_attraper_cerises_droite(uint32_t step_ms){
}etat_attrappe_cerises_droite = ATTRAPE_CERISE_DEMI_BAS; }etat_attrappe_cerises_droite = ATTRAPE_CERISE_DEMI_BAS;
struct trajectoire_t trajectoire; struct trajectoire_t trajectoire;
float angle_fin; float angle_fin;
float pos_recal_x_mm = PETIT_RAYON_ROBOT_MM + 30; float pos_recal_x_mm = 2000 - (PETIT_RAYON_ROBOT_MM + 30);
switch (etat_attrappe_cerises_droite){ switch (etat_attrappe_cerises_droite){
case ATTRAPE_CERISE_DEMI_BAS: case ATTRAPE_CERISE_DEMI_BAS:
@ -56,7 +56,7 @@ enum etat_action_t cerises_attraper_cerises_droite(uint32_t step_ms){
angle_fin = Geometrie_get_angle_optimal(Localisation_get().angle_radian, 30 * DEGRE_EN_RADIAN); angle_fin = Geometrie_get_angle_optimal(Localisation_get().angle_radian, 30 * DEGRE_EN_RADIAN);
Trajectoire_droite(&trajectoire, Localisation_get().x_mm, Localisation_get().y_mm, Trajectoire_droite(&trajectoire, Localisation_get().x_mm, Localisation_get().y_mm,
2000 - 180, 1500 - 75, Localisation_get().angle_radian, angle_fin); 2000 - 180, 3000 - 1600, Localisation_get().angle_radian, angle_fin);
if(parcourt_trajet_simple(trajectoire, step_ms) == ACTION_TERMINEE){ if(parcourt_trajet_simple(trajectoire, step_ms) == ACTION_TERMINEE){
etat_attrappe_cerises_droite = ATTRAPE_CERISE_DEMI_HAUT; etat_attrappe_cerises_droite = ATTRAPE_CERISE_DEMI_HAUT;