mirror of
https://github.com/modelec/PAMI-2025.git
synced 2026-03-18 21:40:36 +01:00
tirette
This commit is contained in:
@@ -27,6 +27,8 @@ struct Step
|
|||||||
#define TX_PIN 17
|
#define TX_PIN 17
|
||||||
#define RX_PIN 16
|
#define RX_PIN 16
|
||||||
|
|
||||||
|
#define TIRETTE_PIN 4
|
||||||
|
|
||||||
// PINs réels
|
// PINs réels
|
||||||
#ifndef SIMULATOR
|
#ifndef SIMULATOR
|
||||||
|
|
||||||
|
|||||||
34
src/main.cpp
34
src/main.cpp
@@ -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 1
|
#define PAMI_SIDE 2
|
||||||
|
|
||||||
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,9 +20,9 @@ bool movementInProgress = false;
|
|||||||
|
|
||||||
// Chaque étape du scénario
|
// Chaque étape du scénario
|
||||||
Step scenario[] = {
|
Step scenario[] = {
|
||||||
{STEP_FORWARD, 30},
|
{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, 30}};
|
{STEP_FORWARD_UNTIL_END, 27}};
|
||||||
const int scenarioLength = sizeof(scenario) / sizeof(Step);
|
const int scenarioLength = sizeof(scenario) / sizeof(Step);
|
||||||
int currentScenarioStep = 0;
|
int currentScenarioStep = 0;
|
||||||
bool scenarioInProgress = false;
|
bool scenarioInProgress = false;
|
||||||
@@ -44,6 +44,7 @@ void setup()
|
|||||||
pinMode(M2_STEP_PIN, OUTPUT);
|
pinMode(M2_STEP_PIN, OUTPUT);
|
||||||
pinMode(M2_DIR_PIN, OUTPUT);
|
pinMode(M2_DIR_PIN, OUTPUT);
|
||||||
pinMode(M2_ENABLE_PIN, OUTPUT);
|
pinMode(M2_ENABLE_PIN, OUTPUT);
|
||||||
|
pinMode(TIRETTE_PIN, INPUT_PULLUP);
|
||||||
// Capteur à ultrasons
|
// Capteur à ultrasons
|
||||||
pinMode(TRIG_PIN, OUTPUT);
|
pinMode(TRIG_PIN, OUTPUT);
|
||||||
pinMode(ECHO_PIN, INPUT);
|
pinMode(ECHO_PIN, INPUT);
|
||||||
@@ -78,7 +79,7 @@ void rotateAsync(float angleDeg, int32_t speed, bool toRight)
|
|||||||
{
|
{
|
||||||
|
|
||||||
// Le nombre de pas à faire
|
// Le nombre de pas à faire
|
||||||
steps_target = getRotationSteps(angleDeg + 4.0); // 4.0 correspond à une correction trouvée à la main :)
|
steps_target = getRotationSteps(angleDeg + 10.0); // 10.0 correspond à une correction trouvée à la main :)
|
||||||
steps_done = 0;
|
steps_done = 0;
|
||||||
|
|
||||||
// La direction du moteur
|
// La direction du moteur
|
||||||
@@ -198,7 +199,14 @@ void detectObstacles()
|
|||||||
stepsRemainingPlace = steps_target - steps_done; // On garde en mémoire les pas restants
|
stepsRemainingPlace = steps_target - steps_done; // On garde en mémoire les pas restants
|
||||||
Serial.println("Début recherche de place...");
|
Serial.println("Début recherche de place...");
|
||||||
// On tourne pour éviter le robot adverse
|
// On tourne pour éviter le robot adverse
|
||||||
rotateAsync(PAMI_SIDE == 1 ? 90 : -90, 1000, true); // Tourner à gauche si côté bleu, droite si jaune
|
if (PAMI_SIDE == 1)
|
||||||
|
{
|
||||||
|
rotateAsync(90, 1000, true); // Tourner à droite si côté bleu
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rotateAsync(90, 1000, false); // Tourner à gauche si côté jaune
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -288,13 +296,27 @@ void processScenario()
|
|||||||
}
|
}
|
||||||
currentScenarioStep++;
|
currentScenarioStep++;
|
||||||
}
|
}
|
||||||
|
bool tirettePose = false;
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if (digitalRead(TIRETTE_PIN) == LOW && !tirettePose)
|
||||||
|
{
|
||||||
|
// Tirette posée
|
||||||
|
tirettePose = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (digitalRead(TIRETTE_PIN) == HIGH && tirettePose)
|
||||||
|
{
|
||||||
|
// Tirette activée
|
||||||
|
delay(5000);
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
updateSteppers(); // Mise à jour des moteurs asynchrone
|
updateSteppers(); // Mise à jour des moteurs asynchrone
|
||||||
|
|
||||||
detectObstacles(); // Vérification des obstacles
|
detectObstacles(); // Vérification des obstacles
|
||||||
|
|
||||||
processScenario(); // Gestion du scénario
|
processScenario(); // Gestion du scénario
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user