From b405fbdb766a7486f2e256860d942ad802d8a6ea Mon Sep 17 00:00:00 2001 From: Samuel Date: Sun, 25 May 2025 08:30:12 +0200 Subject: [PATCH] =?UTF-8?q?I2C=20Cerveau:=20diagnostic=20du=20r=C3=A9seau,?= =?UTF-8?q?=20Actionneur:=20logique=20d'empilement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Actionneurs/Actionneurs.ino | 93 ++++++++++++++++++++++----- Actionneurs/Ascenseur.h | 2 + Actionneurs/Ascenseur.ino | 62 ++++++++++++++---- Actionneurs/I2C_Slave_lib.ino | 61 ++++++++++++++++++ Actionneurs/Translateur.ino | 92 ++++++++++++++++++++++++++ Cerveau/Com_chassis.ino | 10 ++- Cerveau/Com_detection_adversaire.h | 3 +- Cerveau/Com_detection_adversaire.ino | 12 ++-- Cerveau/Com_gradins.ino | 14 ++-- Cerveau/Com_triangulation.ino | 13 +++- Cerveau/ServerWeb.ino | 13 +++- Doc/Communication I2C.odt | Bin 27273 -> 27734 bytes Doc/Communication I2C.pdf | Bin 39635 -> 41335 bytes 13 files changed, 331 insertions(+), 44 deletions(-) create mode 100644 Actionneurs/I2C_Slave_lib.ino create mode 100644 Actionneurs/Translateur.ino diff --git a/Actionneurs/Actionneurs.ino b/Actionneurs/Actionneurs.ino index 4f5fe35..f61b7cc 100644 --- a/Actionneurs/Actionneurs.ino +++ b/Actionneurs/Actionneurs.ino @@ -25,6 +25,11 @@ #define AIMANT_PINCE_GAUCHE_TIENT 9, 500 #define AIMANT_PINCE_GAUCHE_LACHE 9, 400 +#define I2C_CDE_DEMANDE 0x00 +#define I2C_DCE_REALISE 0x01 + +volatile byte * I2C_memory; + SMS_STS sms_sts; int ID_Feetech = 4; @@ -34,12 +39,7 @@ struct position_t{ uint position; } cible_haute, cible_basse, actuelle; - - - -enum etat_action_t Actionneur_empile(); - - +enum etat_action_t Actionneur_empile(void); void setup() { @@ -64,6 +64,9 @@ void setup() //ledcWrite(5, 227); // Position levée (butée haute) //ledcWrite(5, 345); // Position de prise + I2C_Slave_init(0x20); + I2C_memory = get_i2c_data(); + /* while(1){ ledcWrite(FOURCHE_PRISE); @@ -211,6 +214,56 @@ void loop() int Move; int Current; + if(I2C_memory[I2C_CDE_DEMANDE] != I2C_memory[I2C_DCE_REALISE]){ + switch (I2C_memory[I2C_CDE_DEMANDE]){ + case 0: + // Aucune commande + I2C_memory[I2C_DCE_REALISE] = 0; + break; + + case 1: + // Position de départ + break; + + case 2: + // Position de déplacement + // Fourche levée pour ne pas géner les capteurs + Servo_set(FOURCHE_LEVEE); + // Ascenseur en bas + Ascenseur_descend(); + // Pinces internes fermées + Servo_set(DOIGT_PINCE_DROIT_FERME); + Servo_set(DOIGT_PINCE_GAUCHE_FERME); + // Aimant rentrés + Servo_set(AIMANT_PINCE_DROIT_LACHE); + Servo_set(AIMANT_PINCE_GAUCHE_LACHE); + // Translateur à l'arrière + Translateur_recule(); + I2C_memory[I2C_DCE_REALISE] = 2; + break; + + case 3: + // Prise initiale + // Fourche en position de prise + Servo_set(FOURCHE_PRISE); + // Ascenseur en bas + Ascenseur_descend(); + // Pinces internes fermées + Servo_set(DOIGT_PINCE_DROIT_FERME); + Servo_set(DOIGT_PINCE_GAUCHE_FERME); + // Aimant rentrés + Servo_set(AIMANT_PINCE_DROIT_TIENT); + Servo_set(AIMANT_PINCE_GAUCHE_TIENT); + // Translateur à l'arrière + Translateur_recule(); + I2C_memory[I2C_DCE_REALISE] = 3; + + case 4: + // Position de transport + } + + } + if (Serial.available() > 0) { // get incoming byte: @@ -252,6 +305,9 @@ void loop() if(inByte == 'u'){ while(Actionneur_empile() == ACTION_EN_COURS); } + if(inByte == 'v'){ + Ascenseur_cycle(); + } if(inByte == 'c'){ Serial.println("Cycle translateur"); while(Serial.available() > 0){ @@ -264,8 +320,6 @@ void loop() } Serial.printf(">GPIO2:%d\n",digitalRead(2)); Serial.printf(">GPIO10:%d\n",digitalRead(10)); - Serial.printf(">OUT3:%d\n",digitalRead(3)); - Serial.printf(">OUT4:%d\n",digitalRead(4)); delay(25); } } @@ -365,7 +419,7 @@ enum etat_action_t Actionneur_empile(){ Servo_set(AIMANT_PINCE_DROIT_LACHE); Servo_set(AIMANT_PINCE_GAUCHE_LACHE); // Attente avance - delay(5000); + delay(2000); etat_actionneur = ACTIONNEUR_DEPILE; break; @@ -386,6 +440,7 @@ enum etat_action_t Actionneur_empile(){ case ACTIONNEUR_PRISE_INTERNE_2: Serial.println("ACTIONNEUR_PRISE_INTERNE_2"); if(Translateur_etat() == ACTION_TERMINEE){ + delay(500); Servo_set(DOIGT_PINCE_GAUCHE_FERME); Servo_set(DOIGT_PINCE_DROIT_FERME); delay(500); @@ -396,7 +451,6 @@ enum etat_action_t Actionneur_empile(){ case ACTIONNEUR_RECULE_PRISE_INTERNE_1: Serial.println("ACTIONNEUR_RECULE_PRISE_INTERNE_1"); Translateur_recule(); - delay(1000); etat_actionneur = ACTIONNEUR_RECULE_PRISE_INTERNE_2; break; @@ -419,28 +473,35 @@ enum etat_action_t Actionneur_empile(){ case ACTIONNEUR_AVANCE_PRISE_INTERNE: Serial.println("ACTIONNEUR_AVANCE_PRISE_INTERNE"); if(Translateur_etat() == ACTION_TERMINEE){ + delay(500); + Ascenseur_depose(); + Servo_set(DOIGT_PINCE_DROIT_OUVRE); + Servo_set(DOIGT_PINCE_GAUCHE_OUVRE); etat_actionneur = ACTIONNEUR_DEPOSE_PRISE_INTERNE; } break; case ACTIONNEUR_DEPOSE_PRISE_INTERNE: - Servo_set(DOIGT_PINCE_DROIT_OUVRE); - Servo_set(DOIGT_PINCE_GAUCHE_OUVRE); - delay(500); - Translateur_recule(); - etat_actionneur = ACTIONNEUR_RANGE_TRANSLATEUR; + Serial.println("ACTIONNEUR_DEPOSE_PRISE_INTERNE"); + if(Ascenseur_get_etat() == ACTION_TERMINEE){ + delay(500); + Translateur_recule(); + etat_actionneur = ACTIONNEUR_RANGE_TRANSLATEUR; + } break; case ACTIONNEUR_RANGE_TRANSLATEUR: + Serial.println("ACTIONNEUR_RANGE_TRANSLATEUR"); if(Translateur_etat() == ACTION_TERMINEE){ etat_actionneur = ACTIONNEUR_DESCEND; Servo_set(DOIGT_PINCE_DROIT_FERME); Servo_set(DOIGT_PINCE_GAUCHE_FERME); - Ascenseur_monte(); + Ascenseur_descend(); } break; case ACTIONNEUR_DESCEND: + Serial.println("ACTIONNEUR_DESCEND"); if(Ascenseur_get_etat() == ACTION_TERMINEE){ etat_actionneur = ACTIONNEUR_DEPLACEMENT; Servo_set(FOURCHE_TRANSPORT); diff --git a/Actionneurs/Ascenseur.h b/Actionneurs/Ascenseur.h index 430f6af..bca8168 100644 --- a/Actionneurs/Ascenseur.h +++ b/Actionneurs/Ascenseur.h @@ -10,4 +10,6 @@ int Ascenseur_descend(void); void Ascenseur_step_up(void); void Ascenseur_step_down(void); void Ascenseur_gestion(void); +void Ascenseur_cycle(void); +int Ascenseur_depose(void); enum etat_action_t Ascenseur_get_etat(void); \ No newline at end of file diff --git a/Actionneurs/Ascenseur.ino b/Actionneurs/Ascenseur.ino index 4b9fced..a499272 100644 --- a/Actionneurs/Ascenseur.ino +++ b/Actionneurs/Ascenseur.ino @@ -9,6 +9,7 @@ enum etat_ascenseur_t{ ASCENSEUR_ACTIF, ASCENSEUR_MONTE, ASCENSEUR_DESCENT, + ASCENSEUR_DEPOSE, ASCENSEUR_BUSY, }etat_ascenseur=ASCENSEUR_INIT; @@ -139,6 +140,11 @@ enum etat_action_t Ascenseur_cherche_butees(void){ /// @return 1 si l'ascenseur n'est pas prêt int Ascenseur_monte(void){ if(etat_ascenseur == ASCENSEUR_ACTIF){ + tab_position[0] = position_haute_droit; + tab_position[1] = position_haute_gauche; + tab_vitesses_u[0] = 2000; + tab_vitesses_u[1] = 2000; + sms_sts.SyncWritePosEx(asc_ID, 2, tab_position, tab_vitesses_u, tab_acc); etat_ascenseur = ASCENSEUR_MONTE; return 0; } @@ -149,11 +155,30 @@ int Ascenseur_monte(void){ /// @return 1 si l'ascenseur n'est pas prêt int Ascenseur_descend(void){ if(etat_ascenseur == ASCENSEUR_ACTIF){ + tab_position[0] = position_basse_droit; + tab_position[1] = position_basse_gauche; + tab_vitesses_u[0] = 2000; + tab_vitesses_u[1] = 2000; + sms_sts.SyncWritePosEx(asc_ID, 2, tab_position, tab_vitesses_u, tab_acc); etat_ascenseur = ASCENSEUR_DESCENT; return 0; } return 1; } +/// @brief Commande l'ascenseur en position de dépose +/// @return 1 si l'ascenseur n'est pas prêt +int Ascenseur_depose(void){ + if(etat_ascenseur == ASCENSEUR_ACTIF){ + tab_position[0] = position_haute_droit*0.9 + position_basse_droit * 0.1; + tab_position[1] = position_haute_gauche * 0.9 + position_basse_gauche * 0.1; + tab_vitesses_u[0] = 2000; + tab_vitesses_u[1] = 2000; + sms_sts.SyncWritePosEx(asc_ID, 2, tab_position, tab_vitesses_u, tab_acc); + etat_ascenseur = ASCENSEUR_DEPOSE; + return 0; + } + return 1; +} enum etat_action_t Ascenseur_get_etat(void){ if(etat_ascenseur == ASCENSEUR_ACTIF){ @@ -195,6 +220,24 @@ void Ascenseur_update_step(void){ } +void Ascenseur_cycle(){ + while(!Serial.available()){ + Serial.println("Ascenseur_monte"); + Ascenseur_monte(); + while(Ascenseur_get_etat() != ACTION_TERMINEE){ + Ascenseur_gestion(); + } + Serial.println("Ascenseur_descend"); + Ascenseur_descend(); + while(Ascenseur_get_etat() != ACTION_TERMINEE){ + Ascenseur_gestion(); + } + } + while(Serial.available() > 0){ + Serial.read(); + } +} + void Ascenseur_gestion(void){ bool erreur; @@ -218,27 +261,24 @@ void Ascenseur_gestion(void){ break; case ASCENSEUR_MONTE: - tab_position[0] = position_haute_droit; - tab_position[1] = position_haute_gauche; - tab_vitesses_u[0] = 2000; - tab_vitesses_u[1] = 2000; - sms_sts.SyncWritePosEx(asc_ID, 2, tab_position, tab_vitesses_u, tab_acc); + delay(200); etat_ascenseur = ASCENSEUR_BUSY; break; case ASCENSEUR_DESCENT: - tab_position[0] = position_basse_droit; - tab_position[1] = position_basse_gauche; - tab_vitesses_u[0] = 2000; - tab_vitesses_u[1] = 2000; - sms_sts.SyncWritePosEx(asc_ID, 2, tab_position, tab_vitesses_u, tab_acc); + delay(200); + etat_ascenseur = ASCENSEUR_BUSY; + break; + + case ASCENSEUR_DEPOSE: + delay(200); etat_ascenseur = ASCENSEUR_BUSY; break; case ASCENSEUR_BUSY: mov_g = sms_sts.ReadMove(ID_FEETECH_ASC_G); mov_d = sms_sts.ReadMove(ID_FEETECH_ASC_D); - if(!mov_g && !mov_d){ + if(!mov_g && !mov_d) { // Fin du mouvement etat_ascenseur = ASCENSEUR_ACTIF; diff --git a/Actionneurs/I2C_Slave_lib.ino b/Actionneurs/I2C_Slave_lib.ino new file mode 100644 index 0000000..1cf38b4 --- /dev/null +++ b/Actionneurs/I2C_Slave_lib.ino @@ -0,0 +1,61 @@ +#define TAILLE_MEMOIRE_I2C 256 +#define TAILLE_MESSAGE_ENVOI_MAX 32 +byte memoire_I2C[TAILLE_MEMOIRE_I2C]; +byte memoire_I2C_index=0; + +bool nouveau_message=false; + +uint8_t * get_i2c_data(){ + return memoire_I2C; +} +void onRequest(){ + uint32_t taille_envoi; + taille_envoi = min (TAILLE_MEMOIRE_I2C-memoire_I2C_index, TAILLE_MESSAGE_ENVOI_MAX); + + Wire.write(&memoire_I2C[memoire_I2C_index], taille_envoi); + memoire_I2C_index += taille_envoi; + if(memoire_I2C_index>=TAILLE_MEMOIRE_I2C){ + Serial.printf("memoire_I2C_index>=TAILLE_MEMOIRE_I2C\n"); + } +} + +void onReceive(int len){ + memoire_I2C_index = Wire.read(); + while(Wire.available()){ + nouveau_message=true; + memoire_I2C[memoire_I2C_index] = Wire.read(); + memoire_I2C_index++; + } + //Serial.printf("I2C reg: %d, val %d\n", memoire_I2C_index, memoire_I2C[memoire_I2C_index]); +} + +void I2C_Slave_init(int addr){ + Wire.onReceive(onReceive); + Wire.onRequest(onRequest); + Wire.begin(addr); +} + +bool I2C_Slave_nouveau_message(){ + if(nouveau_message){ + nouveau_message=false; + return true; + } + return false; +} + +void I2C_envoi_8bits(byte value, char adresse){ + //printf("I2C_envoi_8bits a:%d v:%d %x %b\n",adresse, value, value, value); + memoire_I2C[adresse] = value; +} + +void I2C_envoi_16bits(int16_t value, char adresse){ + memoire_I2C[adresse] = (value >> 8) & 0xFF; + memoire_I2C[adresse+1] = value & 0xFF; +} + +void I2C_envoi_32bits(int32_t value, char adresse){ + memoire_I2C[adresse] = value >> 24; + memoire_I2C[adresse+1] = (value >> 16) & 0xFF; + memoire_I2C[adresse+2] = (value >> 8) & 0xFF; + memoire_I2C[adresse+3] = value & 0xFF; +} diff --git a/Actionneurs/Translateur.ino b/Actionneurs/Translateur.ino new file mode 100644 index 0000000..448a4eb --- /dev/null +++ b/Actionneurs/Translateur.ino @@ -0,0 +1,92 @@ +#define DUREE_MVT_TRANSLATEUR_MS 1000 +enum translateur_action_t{ + TRANSLATEUR_INIT, + TRANSLATEUR_AVANCE, + TRANSLATEUR_RECULE, +}translateur_action = TRANSLATEUR_INIT; + +unsigned long temps_debut_action = 0; + +void Translateur_init(void){ +// Moteur + /*ledcAttach(3, 500, 8); + ledcWrite(3, 0); + ledcAttach(4, 500, 8); + ledcWrite(4, 0);*/ + pinMode(3, OUTPUT); + pinMode(4, OUTPUT); + // Etat des contacteurs de fin de course + // relecture de 3 sur 2 (Avant) + // relecture de 4 sur 10 (Arrière) + pinMode(2, INPUT); + pinMode(10, INPUT); +} + + +enum etat_action_t Translateur_etat(void){ + if(temps_debut_action + DUREE_MVT_TRANSLATEUR_MS < millis()){ + if(translateur_action == TRANSLATEUR_AVANCE){ + if(digitalRead(2) == 0){ + return ACTION_TERMINEE; + } + }else if(translateur_action == TRANSLATEUR_RECULE){ + if(digitalRead(10) == 0){ + return ACTION_TERMINEE; + } + }else{ + return ACTION_TERMINEE; + } + } + return ACTION_EN_COURS; +} + + +void Translateur_cycle(void){ + if(Translateur_etat() == ACTION_TERMINEE){ + if(translateur_action == TRANSLATEUR_RECULE){ + Translateur_avance(); + }else{ + Translateur_recule(); + } + } +} + + +void Translateur_avance(){ + Moteur_set(-255); + temps_debut_action = millis(); + translateur_action = TRANSLATEUR_AVANCE; +} + +void Translateur_recule(){ + Moteur_set(255); + temps_debut_action = millis(); + translateur_action = TRANSLATEUR_RECULE; +} + +/// @brief pilote la vitesse des moteurs +/// @param vitesse vitesse signée, sera saturée à 255 +void Moteur_set(int vitesse){ + if(vitesse < 0){ + digitalWrite(3, 1); + digitalWrite(4, 0); + }else{ + digitalWrite(3, 0); + digitalWrite(4, 1); + } + /*ledcWrite(3, 0); + ledcWrite(4, 0); + if(vitesse < 0){ + vitesse = -vitesse; + if(vitesse > 255){ + vitesse = 255; + } + ledcWrite(3, vitesse); + }else{ + if(vitesse > 255){ + vitesse = 255; + } + ledcWrite(4, vitesse); + }*/ +} + diff --git a/Cerveau/Com_chassis.ino b/Cerveau/Com_chassis.ino index e5eb8cb..dab0b59 100644 --- a/Cerveau/Com_chassis.ino +++ b/Cerveau/Com_chassis.ino @@ -3,15 +3,21 @@ #include -/// @brief Lit l'état du chassis en I2C int Scan_chassis(struct chassis_reception_t * chassis_reception){ + return Scan_chassis(chassis_reception, true); +} + +/// @brief Lit l'état du chassis en I2C +int Scan_chassis(struct chassis_reception_t * chassis_reception, bool blocking){ unsigned char tampon2[14]; //(Adresse I2c, Adresse dans le registre, tampon, longueur de donnée) error = I2C_lire_registre(I2C_SLAVE_chassi, 0, tampon2, 12); if (error !=0){ Err_Chassi_com =1;IndexErr = 2; affiche_erreur("Scan_Chassi", "Erreur I2C"); - while(1); + if(blocking){ + while(1); + } }else{ Err_Chassi_com =0; IndexErr = 0; diff --git a/Cerveau/Com_detection_adversaire.h b/Cerveau/Com_detection_adversaire.h index 2be81b1..c687c21 100644 --- a/Cerveau/Com_detection_adversaire.h +++ b/Cerveau/Com_detection_adversaire.h @@ -7,6 +7,7 @@ struct detect_adv_reception_t { unsigned char distance_cm[12]; }; -void Detect_adv_lire(struct detect_adv_reception_t * detect_adv_reception); +int Detect_adv_lire(struct detect_adv_reception_t * detect_adv_reception, bool); +int Detect_adv_lire(struct detect_adv_reception_t * detect_adv_reception); #endif diff --git a/Cerveau/Com_detection_adversaire.ino b/Cerveau/Com_detection_adversaire.ino index baa86b4..f2eef8b 100644 --- a/Cerveau/Com_detection_adversaire.ino +++ b/Cerveau/Com_detection_adversaire.ino @@ -2,17 +2,21 @@ #include #include - +int Detect_adv_lire(struct detect_adv_reception_t * detect_adv_reception){ + return Detect_adv_lire(detect_adv_reception, true); +} /// @brief Lit les capteurs VL53L1X -void Detect_adv_lire(struct detect_adv_reception_t * detect_adv_reception){ +int Detect_adv_lire(struct detect_adv_reception_t * detect_adv_reception, bool blocking){ unsigned char tampon2[14]; //(Adresse I2c, Adresse dans le registre, tampon, longueur de donnée) error = I2C_lire_registre(I2C_SLAVE_detect_adv, 0, detect_adv_reception->distance_cm, 12); if (error !=0){ affiche_erreur("Scan_Detect_adversaire", "Erreur I2C"); - while(1); + if(blocking){ + while(1); + } }else{ Serial.println("I2C OK"); - } + return error; } diff --git a/Cerveau/Com_gradins.ino b/Cerveau/Com_gradins.ino index fc2dbe4..24b09e1 100644 --- a/Cerveau/Com_gradins.ino +++ b/Cerveau/Com_gradins.ino @@ -4,8 +4,12 @@ #include "Com_gradins.h" +int Detect_gradin(struct detect_gradin_t * detect_gradin){ + return Detect_gradin(detect_gradin, true); +} + /// @brief Lit les capteurs VL53L1X -void Detect_gradin(struct detect_gradin_t * detect_gradin){ +int Detect_gradin(struct detect_gradin_t * detect_gradin, bool blocking){ unsigned char tampon[14]; char chaine[200]; int angle_mrad; @@ -13,7 +17,9 @@ void Detect_gradin(struct detect_gradin_t * detect_gradin){ error = I2C_lire_registre(I2C_SLAVE_detect_gradin, 0, tampon, 13); if (error !=0){ affiche_erreur("Detect_gradin", "Erreur I2C"); - while(1); + if (blocking){ + while(1); + } }else{ detect_gradin->status = tampon[0]; @@ -21,8 +27,6 @@ void Detect_gradin(struct detect_gradin_t * detect_gradin){ detect_gradin->centre_y_mm = tampon[5] << 24 | tampon[6] << 16 | tampon[7] << 8 | tampon[8]; angle_mrad = tampon[9] << 24 | tampon[10] << 16 | tampon[11] << 8 | tampon[12]; detect_gradin->angle_rad = angle_mrad / 1000.; - - - } + return error; } diff --git a/Cerveau/Com_triangulation.ino b/Cerveau/Com_triangulation.ino index 3a3f548..7dbe07c 100644 --- a/Cerveau/Com_triangulation.ino +++ b/Cerveau/Com_triangulation.ino @@ -1,5 +1,10 @@ +int Scan_Triangulation(struct triangulation_reception_t * triangulation_reception){ + return Scan_Triangulation(triangulation_reception, true); +} + + /// @brief Récupère position (X, Y) et l'orientation du robot -void Scan_Triangulation(struct triangulation_reception_t * triangulation_reception){ +int Scan_Triangulation(struct triangulation_reception_t * triangulation_reception, bool blocking){ unsigned char tampon2[14]; lec_Balise_1, lec_Balise_2, lec_Balise_3 = 0, 0, 0; //(Adresse I2c, Adresse dans le registre, tampon, longueur de donnée) @@ -8,7 +13,10 @@ void Scan_Triangulation(struct triangulation_reception_t * triangulation_recepti if (error !=0){ Err_Tri_com =1;IndexErr = 1;lec_Balise_1=0;lec_Balise_2=0;lec_Balise_3=0; affiche_erreur("Scan_Triangulation", "Erreur I2C"); - while(1); + if(blocking){ + while(1); + } + return error; } else{Err_Tri_com =0;IndexErr = 0;} if (error ==0){ @@ -35,6 +43,7 @@ void Scan_Triangulation(struct triangulation_reception_t * triangulation_recepti if(lec_Balise_1 == 1 && lec_Balise_2 == 1 && lec_Balise_3 == 1 && lec_Calcul_ok == 1 && error ==0){ triangulation_reception->validite = true; } + return error; } void Triangulation_send_immobile(int immobile){ diff --git a/Cerveau/ServerWeb.ino b/Cerveau/ServerWeb.ino index 7d64c03..9ccc9bd 100644 --- a/Cerveau/ServerWeb.ino +++ b/Cerveau/ServerWeb.ino @@ -105,12 +105,19 @@ void showStatus() { char message_statu[500]; const char message_statu_tmplt[] = "A simple form\ \n

Statu du robot

\n\ -

Chassis: %s

Gradin: %d

Triangulation: %d

Detection_adversaire: %d

"; +

Chassis: %s

Gradin: %s

Triangulation: %s

Detection_adversaire: %s

"; struct chassis_reception_t chassis_reception; + struct detect_gradin_t detect_gradin; + struct triangulation_reception_t triangulation_reception; + struct detect_adv_reception_t detect_adv_reception; - statu_to_string(chassis, !Scan_chassis(&chassis_reception) ); + statu_to_string(chassis, !Scan_chassis(&chassis_reception, false) ); + statu_to_string(gradin, !Detect_gradin(&detect_gradin, false) ); + statu_to_string(triangulation, !Scan_Triangulation(&triangulation_reception, false) ); + statu_to_string(detection_adversaire, !Detect_adv_lire(&detect_adv_reception, false) ); - sprintf(message_statu, message_statu_tmplt, chassis, 0, 0, 0); + + sprintf(message_statu, message_statu_tmplt, chassis, gradin, triangulation, detection_adversaire); server.send(200, "text/html", message_statu); } diff --git a/Doc/Communication I2C.odt b/Doc/Communication I2C.odt index 1e3aea141bb0a92561eb87308e3de758205cbe83..f1193c02df9f3dabcaac0ad5691160387c24ca89 100644 GIT binary patch delta 9438 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 delta 8991 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 MmIemJ{14*)0PwF6Z~y=R diff --git a/Doc/Communication I2C.pdf b/Doc/Communication I2C.pdf index 81a483aee59ecd9e3c0d80f6d29932b2ed135798..ac3d41cf11d910e7640a80cc6da08d3cfac30e59 100644 GIT binary patch delta 25389 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 P%*{>w@S&u#6!HH9){W{| delta 23845 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