Gestion de l'arrêt sur obstable fonctionnel

This commit is contained in:
Samuel 2025-05-26 20:04:07 +02:00
parent 8733b2cd80
commit 896df5c089
2 changed files with 23 additions and 2 deletions

View File

@ -365,7 +365,7 @@ void gestion_match(){
case DEPLACEMENT_RELATIF : // Deplacement relatif en cours 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; index_Maitre = ATTENTE_ORDRE;
} }
break; break;
@ -871,12 +871,16 @@ enum etat_action_t deplacement_relatif(int distance_x_mm, int distance_y_mm, flo
// Arrêt du mouvement // Arrêt du mouvement
chassis_emission.status = MOUVEMENT_INTERRUPTION; chassis_emission.status = MOUVEMENT_INTERRUPTION;
send_Chassis(&chassis_emission); send_Chassis(&chassis_emission);
etat_deplacement = DR_INIT;
return ACTION_ECHEC;
} }
}else if(distance_x_mm < 0){ }else if(distance_x_mm < 0){
if(detect_adv_reception.distance_cm[6] < 50){ if(detect_adv_reception.distance_cm[6] < 50){
// Arrêt du mouvement // Arrêt du mouvement
chassis_emission.status = MOUVEMENT_INTERRUPTION; chassis_emission.status = MOUVEMENT_INTERRUPTION;
send_Chassis(&chassis_emission); send_Chassis(&chassis_emission);
etat_deplacement = DR_INIT;
return ACTION_ECHEC;
} }
} }
} }

View File

@ -232,7 +232,7 @@ void Mvmt(){
// Serial.print("X Y Z A !");Serial.print("\t\t");Serial.print("\tinter");Serial.println("\tModif"); // 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); // 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 #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 stepperX.run(); // X
stepperY.run(); // Y stepperY.run(); // Y
stepperZ.run(); // Z stepperZ.run(); // Z
@ -244,6 +244,23 @@ void Mvmt(){
// delay(100); // delay(100);
#endif #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){ // if(Modif_Mvt == 1){
// Position_Calculation(); // Position_Calculation();