Révision 283
Ajouté par vidaval il y a plus de 6 ans
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
Le tour de la piste bleue est effectué en moins de 25 secondes.
Faire ralentir la voiture dans les virages : commencé.