Projet

Général

Profil

« Précédent | Suivant » 

Révision 283

Ajouté par vidaval il y a plus de 6 ans

Le tour de la piste bleue est effectué en moins de 25 secondes.
Faire ralentir la voiture dans les virages : commencé.

Voir les différences:

branch/daval/Emb_App/programme_principal_etud.c
//Asservissement de la voiture
int consigne_roue=700; // Consigne qui permet d etre bien centr? sur la route
char C=1; // Gain asservissment des roues
int vitesse_voulue=35; // Commande de vitesse que l'on envoie
int vitesse_voulue= 35; // Commande de vitesse que l'on envoie
int distance_mesure=0;
void asservissement()
{
CanFrame commande;
......
commande.data.id='T'; //Envoi d'une commande
commande.data.rtr=0; //Indique une ecriture
angle_corrige=k*(consigne-angle_mesure);
commande.data.val=angle_corrige;
snd_dtq (CanTx,commande.msg); //Envoi modification
......
void avance()
{
CanFrame vitesse;
CanFrame orientation_roue;
CanFrame requete;
/* orientation_roue.data.id='D';
orientation_roue.data.rtr=1; //Debut de l'acquisition de l'angle pour faire relentir la voiture dans les virages
int orientation = periph[ADDR('U')].val;*/
vitesse.data.id='V'; //Envoi d'une commande en vitesse
vitesse.data.rtr=0; //Indique une ecriture
vitesse.data.val=vitesse_voulue;
snd_dtq (CanTx,vitesse.msg);
dly_tsk(15);
}
void distance_bord()
......
periph[ADDR('U')].ev= 0x02 ; //L evenement est declenche a chaque fois que la valeur du periph U et mise ? jour
snd_dtq(CanTx, requete_dist.msg);
wai_flg (ev_periph, 0x02, TWF_ANDW, &flag); //Attente lecture
//distance_mesure=periph[ADDR('U')].val;
if(periph[ADDR('U')].val > 2000)
//distance_mesure=periph[ADDR('U')].val; //Cas de la piste verte
if(periph[ADDR('U')].val > 2000) //Pour eviter les trou dans la barriere
{
distance_mesure=700;
}
......
while (1)
{
requete.data.id='D'; //Angle des roues directrices
requete.data.rtr=1; //Requete lecture distance donne par le telemetre
requete.data.rtr=1; //Requete lecture angle des roues
periph[ADDR('D')].ev=0x01;
snd_dtq(CanTx, requete.msg);
wai_flg (ev_periph, 0x01, TWF_ANDW, &flag);

Formats disponibles : Unified diff