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
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;
}
}
}

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(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();