Revision 346

View differences:

branch/sotty/Emb_App/programme_principal_etud.c
135 135
#define PISTE_ROUGE 3
136 136
#define PISTE_NOIRE 4
137 137

  
138
void strategie(void);
138 139
void couleur_piste(void);
139 140
void rotation_tourelle(unsigned int angle);
140 141
int position_tourelle(void);
......
186 187
		vit_roue = k;//**
187 188
		dly_tsk(100);
188 189
	}
189

  
190
	
191
	couleur_piste();
192
	
190 193
    while(1)
191 194
    {
192
		couleur_piste();
195
		strategie();
193 196
		LED_J=1;
194 197
		dly_tsk(100);
195 198
		LED_J=0;
......
203 206
    num_piste = send_requete(MODE_COURSE) & 0x00FF;
204 207
}
205 208

  
206
void maj_variables(void){
209
void strategie(void){
207 210
	static int k = 0;
208

  
209
	if (Bp_G == 1){LED_R = 1;} //si bouton poussoire gauche appuy? allumer led rouge
210
	else{LED_R = 0;}
211

  
212
	//Angle des roues necessaire pour toutes les pistes
213
	distance_mur = distance_telemetre()*sin(3.1415*angle_tourelle/1800.0);
214
	if(distance_mur > 1000 || distance_mur < 0) {	//Trou dans le mur  //**
215
		ang_roue = 0;
216
	}
217
	else {
218
		ang_roue = (K_roue*(distance_mur-500));//**
219
	}
220

  
211
		
221 212
	capteur = send_requete(INFO_CAPTEUR);//**
222 213
	switch(num_piste){
223 214
	    case PISTE_VERTE :
......
243 234
						k = vit_roue*3;
244 235
					}
245 236
					if(k < (vit_max-3)*3){
246
						vit_roue = k/3;//***
237
						vit_roue = k/3;
247 238
						k++;
248 239
					}
249 240
					break;
250 241
					
251 242
				case 0x5604 :
252 243
					if(k < (vit_max-3)*3){
253
						vit_roue = k/3;//***
244
						vit_roue = k/3;
254 245
						k++;
255 246
					}
256 247
					break;
257
				
258 248
					
259 249
				case 0x4304	: // Capteur avant fin
260 250
					vit_roue = vit_max;
......
263 253
            break;
264 254

  
265 255
        case PISTE_NOIRE :
256
			switch(capteur){
257
				case 0x6302 :
258
					if(distance_mur > 1000 || distance_mur < 0) {	//Trou dans le mur  //**
259
						ang_roue = 0;
260
					}
261
					else {
262
						ang_roue = (K_roue*(distance_mur-700));//**
263
					}
264
				break;
265
				
266
				
267
			}
266 268
            break;
267 269
	}
270
	
271
	
272
	
273
}
268 274

  
269 275

  
276
void maj_variables(void){
277
	if (Bp_G == 1){LED_R = 1;} //si bouton poussoire gauche appuy? allumer led rouge
278
	else{LED_R = 0;}
279

  
280
	//Angle des roues necessaire pour toutes les pistes
281
	distance_mur = distance_telemetre()*sin(3.1415*angle_tourelle/1800.0);
282
	if(distance_mur > 1000 || distance_mur < 0) {	//Trou dans le mur  //**
283
		ang_roue = 0;
284
	}
285
	else {
286
		ang_roue = (K_roue*(distance_mur-500));//**
287
	}
288

  
289
	
290

  
291
/*
270 292
	//Detection de couleur
271 293
	//8 bits de poids fort : couleur ('C','R','J','B' ou 'V')
272 294
	if((capteur && 0x0100) == 0x0100){} //Capteur cyan ? //********
......
274 296
    if((capteur && 0x0300) == 0x0300){} //Capteur jaune ?
275 297
    if((capteur && 0x0400) == 0x0400){} //Capteur bleu ?
276 298
    if((capteur && 0x0500) == 0x0500){} //Capteur vert ?
299
	*/
277 300
}
278 301

  
279 302
void asserv_roue(VP_INT stacd){

Also available in: Unified diff