Projet

Général

Profil

« Précédent | Suivant » 

Révision 202

Ajouté par casotty il y a plus de 6 ans

Filtrage du trou effectif
Depart si feu vert

Passage de la piste verte et bleue

Voir les différences:

branch/sotty/Emb_App/SessionM32C_E8a_system.ini
[Target]
M32C E8a SYSTEM=Renesas Communications
[USER_DATA]
RESET=ff002a
RESET=ff002c
branch/sotty/Emb_App/programme_principal_etud.c
short distance_mur = 0;
short angle_tourelle = 450;
short vit_roue = 30;
short ang_roue = 0;
void main()
{
init();
//dly_tsk(1000);
//Obtention de la couleur du feu
while ( (send_requete('M')>>15)==0 ){ //Attente que le feu soit vert
dly_tsk(50);
}
while(1)
{
LED_J=1;
......
asserv_roue();
}
}
void acqui()
{
LED_V=!LED_V;
}
void rotation_tourelle(short angle){
......
while(1){
vitesse_tourelle = K*(angle_tourelle - position_tourelle());
send_commande(VITESSE_TOURELLE, vitesse_tourelle);
dly_tsk(50);
}
}
......
send_commande(VITESSE_ROUES,vitesse);
}
void angle_roue(short angle){
send_commande(ANGLE_ROUES,angle);
}
void asserv_roue(void){
//Maintient de la voiture au centre de la piste
char K = 1.5;
short ang_roue;
short telemetre;
while(1){
vitesse_roue(vit_roue);
//Angle des roues
distance_mur = distance_telemetre()*sin(3.1415*angle_tourelle/1800.0);
ang_roue = K*(distance_mur-500);
if(distance_mur > 1200) { //Trou dans le mur
ang_roue = 0;
}
else {
ang_roue = K*(distance_mur-500);
}
angle_roue(ang_roue);
//Vitesse des roues
if(ang_roue < 50) { //Virages
vit_roue = 30;
}
else {
vit_roue = 20;
}
vitesse_roue(vit_roue);
}
}
......
snd_dtq(CanTx, comm.msg);
}
void acqui()
{
LED_V = !LED_V;
}
void init(void) {
//Initialise tous les peripheriques, taches et cycliques handler

Formats disponibles : Unified diff