Fonction pour savoir si le robot est dans une zone de dépose

This commit is contained in:
Samuel 2023-05-15 22:38:39 +02:00
parent aea5d9814d
commit 6e9e77dd5d
2 changed files with 62 additions and 0 deletions

View File

@ -21,6 +21,7 @@
#include "Moteurs.h"
#include "QEI.h"
#include "Robot_config.h"
#include "Score.h"
#include "Servomoteur.h"
#include "spi_nb.h"
#include "Strategie.h"
@ -162,6 +163,11 @@ int main() {
case MATCH_ARRET_EN_COURS:
commande_vitesse_stop();
i2c_annexe_active_deguisement();
Score_set_funny_action();
if(Robot_est_dans_zone_depose()){
Score_set_pieds_dans_plat();
}
if (timer_match_ms > 100000){
statu_match = MATCH_TERMINEE;
}

View File

@ -369,6 +369,62 @@ int Robot_est_dans_zone_cerise_haut(enum couleur_t couleur){
return 0;
}
/// @brief Renvoi 1 si le robot intersect une zone de dépose
/// @param couleur du robot
/// @return 1 si oui, 0 si non.
int Robot_est_dans_zone_depose(enum couleur_t couleur){
float x_mm, y_mm;
x_mm = Localisation_get().x_mm;
y_mm = Localisation_get().y_mm;
if(couleur == COULEUR_BLEU){
// Zone 1
if(x_mm < 550 && y_mm > 2450){
return 1;
}
// Zone 2
if(x_mm < 550 && y_mm > 800 && y_mm < 1450){
return 1;
}
// Zone 3
if(x_mm > 400 && x_mm < 1050 && y_mm < 550){
return 1;
}
// Zone 4
if(x_mm > 1450 && y_mm < 550){
return 1;
}
// Zone 5
if(x_mm > 1450 && y_mm > 1550 && y_mm < 2200){
return 1;
}
return 0;
}else{
// VERT
// Zone 1
if(x_mm > (2000 - 550) && y_mm > 2450){
return 1;
}
// Zone 2
if(x_mm > (2000 - 550) && y_mm > 800 && y_mm < 1450){
return 1;
}
// Zone 3
if(x_mm < (2000 - 400) && x_mm > 2000 - 1050 && y_mm < 550){
return 1;
}
// Zone 4
if(x_mm < (2000 - 1450) && y_mm < 550){
return 1;
}
// Zone 5
if(x_mm < (2000 - 1450) && y_mm > 1550 && y_mm < 2200){
return 1;
}
return 0;
}
}
enum etat_action_t lance_balles_dans_panier(enum couleur_t couleur, uint32_t step_ms, uint32_t nb_cerises){
static enum {
CALAGE_PANIER_1,