amélioration tirette et scénario

This commit is contained in:
dd060606
2025-05-29 00:23:27 +02:00
parent e1172b367f
commit 25a410b66e

View File

@@ -5,7 +5,7 @@
#include "utils.h" #include "utils.h"
// Côté bleu = 1 et Côté jaune = 2 // Côté bleu = 1 et Côté jaune = 2
#define PAMI_SIDE 2 #define PAMI_SIDE 1
volatile int32_t speed_steps_per_sec = 0; // target speed (signed) volatile int32_t speed_steps_per_sec = 0; // target speed (signed)
uint32_t last_step_time = 0; uint32_t last_step_time = 0;
@@ -20,6 +20,7 @@ bool movementInProgress = false;
// Chaque étape du scénario // Chaque étape du scénario
Step scenario[] = { Step scenario[] = {
{STEP_ROTATE, PAMI_SIDE == 1 ? -1 : 1},
{STEP_FORWARD, 105}, {STEP_FORWARD, 105},
{STEP_ROTATE, PAMI_SIDE == 1 ? -90 : 90}, // Tourner à gauche si côté bleu, droite si jaune {STEP_ROTATE, PAMI_SIDE == 1 ? -90 : 90}, // Tourner à gauche si côté bleu, droite si jaune
{STEP_FORWARD_UNTIL_END, 27}}; {STEP_FORWARD_UNTIL_END, 27}};
@@ -231,13 +232,13 @@ void detectObstacles()
} }
} }
// On gère le scénario du robot // On gère le scénario du robot, retourne 0 si le scénario est terminé, 1 si en cours
void processScenario() int processScenario()
{ {
if (!scenarioInProgress) if (!scenarioInProgress)
return; return 1;
if (movementInProgress) if (movementInProgress)
return; return 1;
// Si on est en phase de recherche de place // Si on est en phase de recherche de place
if (recherchePlace) if (recherchePlace)
@@ -268,14 +269,14 @@ void processScenario()
recherchePlace = false; recherchePlace = false;
rechercheStep = 0; rechercheStep = 0;
} }
return; return 1;
} }
if (currentScenarioStep >= scenarioLength) if (currentScenarioStep >= scenarioLength)
{ {
Serial.println("Scénario terminé !"); Serial.println("Scénario terminé !");
scenarioInProgress = false; scenarioInProgress = false;
return; return 0;
} }
Step &step = scenario[currentScenarioStep]; Step &step = scenario[currentScenarioStep];
@@ -295,6 +296,8 @@ void processScenario()
break; break;
} }
currentScenarioStep++; currentScenarioStep++;
return 1;
} }
bool tirettePose = false; bool tirettePose = false;
void loop() void loop()
@@ -316,7 +319,15 @@ void loop()
detectObstacles(); // Vérification des obstacles detectObstacles(); // Vérification des obstacles
processScenario(); // Gestion du scénario // Gestion du scénario
if (processScenario() == 0)
{
Serial.println("Scénario terminé, arrêt des moteurs.");
stopMotors();
// On redémarre le robot pour recommencer la partie
ESP.restart();
break;
};
} }
} }
} }