Révision 360
Ajouté par casotty il y a plus de 6 ans
branch/sotty/Emb_App/SessionM32C_E8a_system.ini | ||
---|---|---|
[Target]
|
||
M32C E8a SYSTEM=Renesas Communications
|
||
[USER_DATA]
|
||
RESET=ff0036
|
||
RESET=ff003e
|
branch/sotty/Emb_App/programme_principal_etud.c | ||
---|---|---|
short distance_mur = 0;
|
||
short angle_tourelle = 450;
|
||
|
||
const short vit_max = 30;
|
||
short vit_max = 30;
|
||
unsigned int vit_roue = 15;//*
|
||
short K_roue = 1;
|
||
short ang_roue = 0;
|
||
short capteur = 0;
|
||
|
||
short compar_mur = 500;
|
||
|
||
char num_piste = -1;
|
||
|
||
char rotation_roues_asserv = 1; //Si 1 roues libres sinon blocage
|
||
char rotation_roues_strat = 1; //Si 1 roues libres sinon blocage
|
||
short filtre_sup = 1000;
|
||
short filtre_inf = 0;
|
||
|
||
|
||
void main()
|
||
{
|
||
int k;
|
||
... | ... | |
|
||
couleur_piste();
|
||
sta_tsk(ID_strategie);
|
||
|
||
while(1)
|
||
{
|
||
//strategie();
|
||
LED_J=1;
|
||
dly_tsk(100);
|
||
LED_J=0;
|
||
... | ... | |
capteur = send_requete(INFO_CAPTEUR);//**
|
||
switch(num_piste){
|
||
case PISTE_VERTE :
|
||
vit_roue = 40;
|
||
break;
|
||
|
||
case PISTE_BLEUE :
|
||
... | ... | |
case PISTE_ROUGE :
|
||
switch(capteur){
|
||
case 0x6301 : //Capteur perso avant bosse rouge
|
||
ang_roue = 0;//*****
|
||
rotation_roues_strat = 0; //blocage de langle des roues
|
||
vit_roue = 45;
|
||
break;
|
||
|
||
case 0x4203 : //Capteur apres bosse rouge
|
||
rotation_roues_strat = 1;
|
||
vit_roue = 8;
|
||
k = 0;
|
||
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;
|
||
case 0x5601 : //evitement tonneaux
|
||
compar_mur = 680; //decalage a gauche
|
||
filtre_inf = 300;
|
||
break;
|
||
|
||
case 0x4a01 : //fin tonneaux
|
||
compar_mur = 500; //voiture centree
|
||
filtre_inf = 0;
|
||
break;
|
||
|
||
case 0x5602 : //virage avant saut
|
||
vit_roue = 15;
|
||
break;
|
||
|
||
case 0x6302 : //quart perso bosse
|
||
vit_roue = 10;
|
||
filtre_inf = 480;
|
||
filtre_sup = 520;
|
||
break;
|
||
|
||
case 0x5202 : //fin de bosse
|
||
filtre_inf = 0;
|
||
filtre_sup = 1000;
|
||
vit_roue = vit_max;
|
||
break;
|
||
|
||
case 0x6320 : //capteur perso avant saut
|
||
rotation_roues_strat = 0; //blocage de langle des roues
|
||
vit_roue = vit_max + 12;
|
||
break;
|
||
|
||
case 0x4203 : //capteur apres saut
|
||
rotation_roues_strat = 1; //deblocage de langle des roues
|
||
vit_roue = vit_max-20;
|
||
break;
|
||
|
||
case 0x5604 : //capteur avant cross
|
||
filtre_inf = 300;
|
||
filtre_sup = 700;
|
||
break;
|
||
|
||
case 0x4304 : //capteur apres cross
|
||
filtre_inf = 0;
|
||
filtre_sup = 1000;
|
||
vit_roue = vit_max;
|
||
break;
|
||
|
||
|
||
}
|
||
break;
|
||
}
|
||
... | ... | |
|
||
//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;
|
||
if(distance_mur > filtre_sup || distance_mur < filtre_inf) { //Trou dans le mur
|
||
rotation_roues_asserv = 0;
|
||
}
|
||
else {
|
||
ang_roue = (K_roue*(distance_mur-500));//**
|
||
rotation_roues_asserv = 1;
|
||
}
|
||
|
||
|
||
|
||
ang_roue = rotation_roues_asserv*rotation_roues_strat*(K_roue*(distance_mur-compar_mur));
|
||
/*
|
||
//Detection de couleur
|
||
//8 bits de poids fort : couleur ('C','R','J','B' ou 'V')
|
Formats disponibles : Unified diff
Mise en place des capteurs pour la piste noire