diff --git a/Cerveau/Cerveau.ino b/Cerveau/Cerveau.ino index bb3d04c..ed76ad2 100644 --- a/Cerveau/Cerveau.ino +++ b/Cerveau/Cerveau.ino @@ -365,7 +365,7 @@ void gestion_match(){ case DEPLACEMENT_RELATIF : // Deplacement relatif en cours - if(deplacement_relatif(translation_x_mm, translation_y_mm, rotation_rad, 1) == ACTION_TERMINEE){ + if(deplacement_relatif(translation_x_mm, translation_y_mm, rotation_rad, 1) != ACTION_EN_COURS){ index_Maitre = ATTENTE_ORDRE; } break; @@ -871,12 +871,16 @@ enum etat_action_t deplacement_relatif(int distance_x_mm, int distance_y_mm, flo // ArrĂȘt du mouvement chassis_emission.status = MOUVEMENT_INTERRUPTION; send_Chassis(&chassis_emission); + etat_deplacement = DR_INIT; + return ACTION_ECHEC; } }else if(distance_x_mm < 0){ if(detect_adv_reception.distance_cm[6] < 50){ // ArrĂȘt du mouvement chassis_emission.status = MOUVEMENT_INTERRUPTION; send_Chassis(&chassis_emission); + etat_deplacement = DR_INIT; + return ACTION_ECHEC; } } } diff --git a/Chassis/Chassis.ino b/Chassis/Chassis.ino index 171e5e9..7b7b557 100644 --- a/Chassis/Chassis.ino +++ b/Chassis/Chassis.ino @@ -232,7 +232,7 @@ void Mvmt(){ // Serial.print("X Y Z A !");Serial.print("\t\t");Serial.print("\tinter");Serial.println("\tModif"); // Serial.print(stepperX.distanceToGo());Serial.print("/");Serial.print(stepperY.distanceToGo());Serial.print("/");Serial.print(stepperZ.distanceToGo());Serial.print("/");Serial.print(stepperA.distanceToGo());Serial.print("\t");Serial.print(Interrupt);Serial.print("\t");Serial.println(Modif_Mvt); #endif - while((stepperX.distanceToGo() != 0 || stepperY.distanceToGo() != 0 || stepperZ.distanceToGo() != 0 || stepperA.distanceToGo() != 0) /*&& (Interrupt != 1 || Modif_Mvt != 1)*/){ + while((stepperX.distanceToGo() != 0 || stepperY.distanceToGo() != 0 || stepperZ.distanceToGo() != 0 || stepperA.distanceToGo() != 0) && (I2C_memory[0] != 1)){ stepperX.run(); // X stepperY.run(); // Y stepperZ.run(); // Z @@ -244,6 +244,23 @@ void Mvmt(){ // delay(100); #endif } + // Bien bloquer le robot en cas d'interruption + if(I2C_memory[0] == 1){ + stepperX.setAcceleration(40000); + stepperY.setAcceleration(40000); + stepperZ.setAcceleration(40000); + stepperA.setAcceleration(40000); + stepperX.stop(); // X + stepperY.stop(); // Y + stepperZ.stop(); // Z + stepperA.stop(); // A + while(stepperX.distanceToGo() != 0 || stepperY.distanceToGo() != 0 || stepperZ.distanceToGo() != 0 || stepperA.distanceToGo() != 0){ + stepperX.run(); // X + stepperY.run(); // Y + stepperZ.run(); // Z + stepperA.run(); // A + } + } } // if(Modif_Mvt == 1){ // Position_Calculation();