219 lines
6.9 KiB
C
219 lines
6.9 KiB
C
#include "Strategie.h"
|
|
#include "Geometrie.h"
|
|
#include "Servomoteur.h"
|
|
|
|
|
|
|
|
enum etat_action_t Strategie_super_star(uint32_t step_ms, enum couleur_t couleur){
|
|
static enum{
|
|
SSS_INIT,
|
|
SSS_AVANCE,
|
|
SSS_DANCE
|
|
} etat_sss = SSS_INIT;
|
|
static struct trajectoire_t trajectoire_composee;
|
|
static struct trajectoire_t trajectoire1, trajectoire2, trajectoire3;
|
|
|
|
|
|
|
|
switch(etat_sss){
|
|
case SSS_INIT:
|
|
if(couleur == COULEUR_JAUNE){
|
|
Localisation_set(45, 1895, 0);
|
|
Trajectoire_droite(&trajectoire1, 45, 1895, 1135, 1895, 0, 0);
|
|
Trajectoire_circulaire(&trajectoire2, 1135, 1645, M_PI/2, 0, 250, 0, -M_PI/2);
|
|
Trajectoire_droite(&trajectoire3, 1385, 1645, 1385, 1580, 0, 0);
|
|
}else{
|
|
Localisation_set(3000 - 45, 1895, M_PI);
|
|
Trajectoire_droite(&trajectoire1, 3000-45, 1895, 3000- 1135, 1895, M_PI, M_PI);
|
|
Trajectoire_circulaire(&trajectoire2, 3000-1135, 1645, M_PI/2, M_PI, 250, M_PI, -M_PI/2);
|
|
Trajectoire_droite(&trajectoire3, 3000-1385, 1645, 3000-1385, 1580, 0, 0);
|
|
}
|
|
|
|
Trajectoire_composee_init(&trajectoire_composee);
|
|
Trajectoire_composee_ajout(&trajectoire_composee, &trajectoire1);
|
|
Trajectoire_composee_ajout(&trajectoire_composee, &trajectoire2);
|
|
Trajectoire_composee_ajout(&trajectoire_composee, &trajectoire3);
|
|
etat_sss = SSS_AVANCE;
|
|
break;
|
|
|
|
case SSS_AVANCE:
|
|
Trajet_config(TRAJECT_CONFIG_RAPIDE);
|
|
if(Strategie_parcourir_trajet(trajectoire_composee, step_ms, EVITEMENT_SANS_EVITEMENT) == ACTION_TERMINEE){
|
|
etat_sss = SSS_DANCE;
|
|
}
|
|
break;
|
|
|
|
case SSS_DANCE:
|
|
return ACTION_TERMINEE;
|
|
}
|
|
return ACTION_EN_COURS;
|
|
|
|
}
|
|
|
|
|
|
|
|
enum etat_action_t Strategie_groupie_1(uint32_t step_ms, enum couleur_t couleur){
|
|
static enum{
|
|
SSS_INIT,
|
|
SSS_AVANCE,
|
|
SSS_DANCE
|
|
} etat_sss = SSS_INIT;
|
|
static struct trajectoire_t trajectoire_composee;
|
|
static struct trajectoire_t trajectoire1, trajectoire2, trajectoire3;
|
|
|
|
|
|
|
|
switch(etat_sss){
|
|
case SSS_INIT:
|
|
Localisation_set(45, 1895, 0);
|
|
Trajectoire_droite(&trajectoire1, 45, 1895, 1135, 1895, 0, 0);
|
|
Trajectoire_circulaire(&trajectoire2, 1135, 1645, M_PI/2, 0, 250, 0, -M_PI/2);
|
|
Trajectoire_droite(&trajectoire3, 1385, 1645, 1385, 1580, 0, 0);
|
|
Trajectoire_composee_init(&trajectoire_composee);
|
|
Trajectoire_composee_ajout(&trajectoire_composee, &trajectoire1);
|
|
Trajectoire_composee_ajout(&trajectoire_composee, &trajectoire2);
|
|
Trajectoire_composee_ajout(&trajectoire_composee, &trajectoire3);
|
|
etat_sss = SSS_AVANCE;
|
|
break;
|
|
|
|
case SSS_AVANCE:
|
|
Trajet_config(TRAJECT_CONFIG_RAPIDE);
|
|
if(Strategie_parcourir_trajet(trajectoire_composee, step_ms, EVITEMENT_SANS_EVITEMENT) == ACTION_TERMINEE){
|
|
etat_sss = SSS_DANCE;
|
|
}
|
|
break;
|
|
|
|
case SSS_DANCE:
|
|
return ACTION_TERMINEE;
|
|
}
|
|
return ACTION_EN_COURS;
|
|
|
|
}
|
|
|
|
enum etat_action_t Strategie_groupie_2(uint32_t step_ms, enum couleur_t couleur){
|
|
static enum{
|
|
SSS_INIT,
|
|
SSS_AVANCE,
|
|
SSS_DANCE
|
|
} etat_sss = SSS_INIT;
|
|
static struct trajectoire_t trajectoire_composee;
|
|
static struct trajectoire_t trajectoire1, trajectoire2, trajectoire3;
|
|
|
|
|
|
|
|
switch(etat_sss){
|
|
case SSS_INIT:
|
|
Localisation_set(45, 1895, 0);
|
|
Trajectoire_droite(&trajectoire1, 45, 1895, 1135, 1895, 0, 0);
|
|
Trajectoire_circulaire(&trajectoire2, 1135, 1645, M_PI/2, 0, 250, 0, -M_PI/2);
|
|
Trajectoire_droite(&trajectoire3, 1385, 1645, 1385, 1580, 0, 0);
|
|
Trajectoire_composee_init(&trajectoire_composee);
|
|
Trajectoire_composee_ajout(&trajectoire_composee, &trajectoire1);
|
|
Trajectoire_composee_ajout(&trajectoire_composee, &trajectoire2);
|
|
Trajectoire_composee_ajout(&trajectoire_composee, &trajectoire3);
|
|
etat_sss = SSS_AVANCE;
|
|
break;
|
|
|
|
case SSS_AVANCE:
|
|
Trajet_config(TRAJECT_CONFIG_RAPIDE);
|
|
if(Strategie_parcourir_trajet(trajectoire_composee, step_ms, EVITEMENT_SANS_EVITEMENT) == ACTION_TERMINEE){
|
|
etat_sss = SSS_DANCE;
|
|
}
|
|
break;
|
|
|
|
case SSS_DANCE:
|
|
return ACTION_TERMINEE;
|
|
}
|
|
return ACTION_EN_COURS;
|
|
|
|
}
|
|
|
|
enum etat_action_t Strategie_groupie_3(uint32_t step_ms, enum couleur_t couleur){
|
|
static enum{
|
|
SSS_INIT,
|
|
SSS_AVANCE,
|
|
SSS_DANCE
|
|
} etat_sss = SSS_INIT;
|
|
static struct trajectoire_t trajectoire_composee;
|
|
static struct trajectoire_t trajectoire1, trajectoire2, trajectoire3;
|
|
|
|
|
|
|
|
switch(etat_sss){
|
|
case SSS_INIT:
|
|
Localisation_set(45, 1895, 0);
|
|
Trajectoire_droite(&trajectoire1, 45, 1895, 1135, 1895, 0, 0);
|
|
Trajectoire_circulaire(&trajectoire2, 1135, 1645, M_PI/2, 0, 250, 0, -M_PI/2);
|
|
Trajectoire_droite(&trajectoire3, 1385, 1645, 1385, 1580, 0, 0);
|
|
Trajectoire_composee_init(&trajectoire_composee);
|
|
Trajectoire_composee_ajout(&trajectoire_composee, &trajectoire1);
|
|
Trajectoire_composee_ajout(&trajectoire_composee, &trajectoire2);
|
|
Trajectoire_composee_ajout(&trajectoire_composee, &trajectoire3);
|
|
etat_sss = SSS_AVANCE;
|
|
break;
|
|
|
|
case SSS_AVANCE:
|
|
Trajet_config(TRAJECT_CONFIG_RAPIDE);
|
|
if(Strategie_parcourir_trajet(trajectoire_composee, step_ms, EVITEMENT_SANS_EVITEMENT) == ACTION_TERMINEE){
|
|
etat_sss = SSS_DANCE;
|
|
}
|
|
break;
|
|
|
|
case SSS_DANCE:
|
|
return ACTION_TERMINEE;
|
|
}
|
|
return ACTION_EN_COURS;
|
|
|
|
}
|
|
|
|
void PAMI_dance(int identifiant){
|
|
switch (identifiant)
|
|
{
|
|
case 0:
|
|
sleep_ms(500);
|
|
Servomoteur_set(DOIGT_AVANCE);
|
|
sleep_ms(250);
|
|
Servomoteur_set(DOIGT_RETRAIT);
|
|
sleep_ms(250); // t = 1,0 s
|
|
sleep_ms(750); // t = 1,75 s
|
|
Servomoteur_set(DOIGT_AVANCE);
|
|
sleep_ms(250);
|
|
Servomoteur_set(DOIGT_RETRAIT);
|
|
sleep_ms(250); // t = 2,25 s
|
|
sleep_ms(950); // t = 3,2 s
|
|
for(int i =0; i<3;i++){
|
|
Servomoteur_set(DOIGT_AVANCE);
|
|
sleep_ms(200);
|
|
Servomoteur_set(DOIGT_RETRAIT);
|
|
sleep_ms(200);
|
|
}// t = 4,4 s
|
|
sleep_ms(1400); // t = 5,8
|
|
break;
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
sleep_ms(1100); // t = 1,1 s
|
|
Servomoteur_set(DOIGT_AVANCE);
|
|
sleep_ms(250);
|
|
Servomoteur_set(DOIGT_RETRAIT);
|
|
sleep_ms(250); // t = 1,6 s
|
|
sleep_ms(800); // t = 2,4 s
|
|
Servomoteur_set(DOIGT_AVANCE);
|
|
sleep_ms(250);
|
|
Servomoteur_set(DOIGT_RETRAIT);
|
|
sleep_ms(250); // t = 2,9 s
|
|
sleep_ms(1600); // t = 4,5 s
|
|
for(int i =0; i<3;i++){
|
|
Servomoteur_set(DOIGT_AVANCE);
|
|
sleep_ms(150);
|
|
Servomoteur_set(DOIGT_RETRAIT);
|
|
sleep_ms(150);
|
|
}// t = 5,4 s
|
|
sleep_ms(400); // t = 5,8 s
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
} |