Projet

Général

Profil

« Précédent | Suivant » 

Révision 346

Ajouté par casotty il y a plus de 6 ans

Séparation de la strategie de lasservissement des roues

Voir les différences:

branch/sotty/Emb_App/programme_principal_etud.c
#define PISTE_ROUGE 3
#define PISTE_NOIRE 4
void strategie(void);
void couleur_piste(void);
void rotation_tourelle(unsigned int angle);
int position_tourelle(void);
......
vit_roue = k;//**
dly_tsk(100);
}
couleur_piste();
while(1)
{
couleur_piste();
strategie();
LED_J=1;
dly_tsk(100);
LED_J=0;
......
num_piste = send_requete(MODE_COURSE) & 0x00FF;
}
void maj_variables(void){
void strategie(void){
static int k = 0;
if (Bp_G == 1){LED_R = 1;} //si bouton poussoire gauche appuy? allumer led rouge
else{LED_R = 0;}
//Angle des roues necessaire pour toutes les pistes
distance_mur = distance_telemetre()*sin(3.1415*angle_tourelle/1800.0);
if(distance_mur > 1000 || distance_mur < 0) { //Trou dans le mur //**
ang_roue = 0;
}
else {
ang_roue = (K_roue*(distance_mur-500));//**
}
capteur = send_requete(INFO_CAPTEUR);//**
switch(num_piste){
case PISTE_VERTE :
......
k = vit_roue*3;
}
if(k < (vit_max-3)*3){
vit_roue = k/3;//***
vit_roue = k/3;
k++;
}
break;
case 0x5604 :
if(k < (vit_max-3)*3){
vit_roue = k/3;//***
vit_roue = k/3;
k++;
}
break;
case 0x4304 : // Capteur avant fin
vit_roue = vit_max;
......
break;
case PISTE_NOIRE :
switch(capteur){
case 0x6302 :
if(distance_mur > 1000 || distance_mur < 0) { //Trou dans le mur //**
ang_roue = 0;
}
else {
ang_roue = (K_roue*(distance_mur-700));//**
}
break;
}
break;
}
}
void maj_variables(void){
if (Bp_G == 1){LED_R = 1;} //si bouton poussoire gauche appuy? allumer led rouge
else{LED_R = 0;}
//Angle des roues necessaire pour toutes les pistes
distance_mur = distance_telemetre()*sin(3.1415*angle_tourelle/1800.0);
if(distance_mur > 1000 || distance_mur < 0) { //Trou dans le mur //**
ang_roue = 0;
}
else {
ang_roue = (K_roue*(distance_mur-500));//**
}
/*
//Detection de couleur
//8 bits de poids fort : couleur ('C','R','J','B' ou 'V')
if((capteur && 0x0100) == 0x0100){} //Capteur cyan ? //********
......
if((capteur && 0x0300) == 0x0300){} //Capteur jaune ?
if((capteur && 0x0400) == 0x0400){} //Capteur bleu ?
if((capteur && 0x0500) == 0x0500){} //Capteur vert ?
*/
}
void asserv_roue(VP_INT stacd){

Formats disponibles : Unified diff