From 74629edaa03a7554e1a046bb9a38985770ccfd76 Mon Sep 17 00:00:00 2001 From: Samuel Date: Mon, 26 May 2025 15:27:06 +0200 Subject: [PATCH] Ajout de la gestion de la tirette --- Actionneurs/Actionneurs.ino | 3 +++ Cerveau/Cerveau.ino | 15 +++++++++++++-- Cerveau/Com_gradins.h | 2 ++ Cerveau/Com_gradins.ino | 19 +++++++++++++++++++ Doc/Communication I2C.odt | Bin 27734 -> 27841 bytes 5 files changed, 37 insertions(+), 2 deletions(-) diff --git a/Actionneurs/Actionneurs.ino b/Actionneurs/Actionneurs.ino index 9d2acce..d11eddd 100644 --- a/Actionneurs/Actionneurs.ino +++ b/Actionneurs/Actionneurs.ino @@ -279,6 +279,9 @@ void loop() Servo_set(DOIGT_PINCE_GAUCHE_FERME); Servo_set(DOIGT_PINCE_DROIT_FERME); } + if(inByte == 'f'){ + Servo_set(FOURCHE_LEVEE); + } if(inByte == '1'){ reglage_servo(8); } diff --git a/Cerveau/Cerveau.ino b/Cerveau/Cerveau.ino index e171e6e..ba6cd41 100644 --- a/Cerveau/Cerveau.ino +++ b/Cerveau/Cerveau.ino @@ -281,6 +281,7 @@ void gestion_match(){ struct detect_gradin_t detect_gradin; enum etat_action_t etat_action; static int translation_x_mm, translation_y_mm; + static char tirette_enlevee=1; static float rotation_rad; static int couleur; @@ -343,6 +344,7 @@ void gestion_match(){ } delay(200); IHM_attente_match(&couleur); + tirette_enlevee = 1; index_Maitre = MATCH_EN_COURS; @@ -369,8 +371,14 @@ void gestion_match(){ break; case MATCH_EN_COURS: - if(Strategie(couleur) == ACTION_TERMINEE){ - index_Maitre = ATTENTE_ORDRE; + Serial.printf(">tirette_m:%d\n", tirette_enlevee); + if(tirette_enlevee == 0){ + lire_tirette(&tirette_enlevee); + } + if(tirette_enlevee == 1){ + if(Strategie(couleur) == ACTION_TERMINEE){ + index_Maitre = ATTENTE_ORDRE; + } } break; @@ -456,6 +464,9 @@ enum etat_action_t Strategie(int couleur){ case STRAT_ALLER_GRADINS_1_A: if(couleur == COULEUR_JAUNE){ + translation_x_mm = 0; + translation_y_mm = 450; + rotation_rad = 0; etat_action = deplacement_absolu(800, 800, -M_PI/2., 1); }else{ etat_action = deplacement_absolu(3000 - 800, 800, -M_PI/2., 1); diff --git a/Cerveau/Com_gradins.h b/Cerveau/Com_gradins.h index 8325890..af32f12 100644 --- a/Cerveau/Com_gradins.h +++ b/Cerveau/Com_gradins.h @@ -9,4 +9,6 @@ struct detect_gradin_t{ float angle_rad; }; +int lire_tirette(void); + #endif \ No newline at end of file diff --git a/Cerveau/Com_gradins.ino b/Cerveau/Com_gradins.ino index 24b09e1..e35e067 100644 --- a/Cerveau/Com_gradins.ino +++ b/Cerveau/Com_gradins.ino @@ -30,3 +30,22 @@ int Detect_gradin(struct detect_gradin_t * detect_gradin, bool blocking){ } return error; } + +int lire_tirette(char * tirette){ + return lire_tirette(tirette, true); +} + + +int lire_tirette(char * tirette, bool continuous_try){ + unsigned char tampon; + //(Adresse I2c, Adresse dans le registre, tampon, longueur de donnée) + error = I2C_lire_registre(I2C_SLAVE_detect_gradin, 0x0d, &tampon, 1); + while(error !=0 && continuous_try){ + affiche_erreur("lire_tirette", "Erreur I2C"); + error = I2C_lire_registre(I2C_SLAVE_detect_gradin, 0x0d, &tampon, 1); + } + *tirette = tampon; + Serial.printf(">tirette:%d", *tirette); + return error; + +} diff --git a/Doc/Communication I2C.odt b/Doc/Communication I2C.odt index f1193c02df9f3dabcaac0ad5691160387c24ca89..e7e9c640381808885b47e125dba1bfd511751ea5 100644 GIT binary patch delta 7645 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