Revision 291 branch/toribio/Emb_App/programme_principal_etud.c

View differences:

programme_principal_etud.c
125 125
short alpha;
126 126
unsigned short distance;
127 127
short angleR;
128
/*short vitesse;*/
129 128
short virage=0;
130 129
short numcapt=0;
131 130
short sauter=0;
131
short noir=0;
132 132

  
133 133

  
134

  
135 134
void asserv0(){
136 135
	while(1){
137 136
		short k=1; //Gain du correcteur P
......
181 180
		//lecture de la position de la roue
182 181
		CanFrame req,comm;
183 182
		UINT flag;
184
		if (sauter==0){
185
			//Commande de l'angle de roue
183
		if ((sauter==0) && (noir==0)){
184
			//Commande de l'angle de roue en zone normal
186 185
			comm.data.id='D';
187 186
			comm.data.rtr=0; //indique une ?criture
188 187
			if (distance>1000);
......
190 189
			snd_dtq(CanTx, comm.msg);
191 190
			dly_tsk(5);	
192 191
		}
193
 
194
 		else if (sauter==2){
195
			//Commande de l'angle de roue
196
			comm.data.id='D';
197
			comm.data.rtr=0; //indique une ?criture
198
			if (distance>1000);
199
			else comm.data.val=k*(distance-610);//on tourne un peu plus pour le saut
200
			snd_dtq(CanTx, comm.msg);
201
			dly_tsk(5);	
202
		}
203 192
		 
204 193
	 	 else if (sauter==3 ){
205 194
			//Commande de l'angle de roue
206 195
			comm.data.id='D';
207
			comm.data.rtr=0; //indique une ?criture
196
			comm.data.rtr=0; 
208 197
			if (distance>1000);
209 198
			else comm.data.val=k*(distance-700);
210 199
			snd_dtq(CanTx, comm.msg);
211 200
			dly_tsk(5);	
212 201
		}
213
 		else if (sauter==1 ){
202
 		else if ((sauter==1) || (noir==2)){
214 203
			//Commande de l'angle de roue
215 204
			comm.data.id='D';
216 205
			comm.data.rtr=0; //indique une ?criture
......
231 220
		requete.data.rtr=0;
232 221
		if (sauter==1){   //augmentation de la vitesse pour sauter
233 222
			requete.data.val=45;}
234
		else if (sauter==2){	  //diminution vitesse pour preparer saut
235
			requete.data.val=25;}
236 223
		else if (sauter==3){	  //diminution vitesse pour apr?s saut
237 224
			requete.data.val=10;}
238
		else if (sauter==0){
225
		else if ((sauter==0) && (noir==0)){
239 226
			requete.data.val=35;} //pas de saut
227
		else if ((sauter==0) && (noir==2)){
228
			requete.data.val=10;} //pas de saut
240 229
		snd_dtq(CanTx, requete.msg);
241 230
		dly_tsk(5);
242 231
	}
......
265 254
}
266 255

  
267 256
void saut(){
268
	while(1){
269
	    if (numcapt==2 && virage==20992){
270
			sauter=2; //pr?paration au saut
271
		}	
272
		else if (numcapt==3 && virage!=16896){
257
	while(1){	
258
		if (numcapt==3 && virage!=16896){
259
			dly_tsk(400);
273 260
			sauter=1; //Renvoie 1 si c'est la zone du saut
274 261
			}
275 262
		else if (numcapt==3 && virage==16896){
......
282 269
	
283 270
}
284 271

  
272
void pistenoire(){
273
	while(1){
274
	   if ((numcapt==2) && (virage==22016)){
275
			noir=2; //zone de passage 
276
		}
277
		else if (numcapt==1 && virage==22016){
278
			noir=1; // on passe les toneaux	
279
			} 
280
		else if (numcapt!=2 && virage!=22016){
281
			noir=0; // retour ? la regulation normal
282
			}
283
		dly_tsk(5);
284
	}
285
	
286
}
285 287

  
286 288

  
287 289
void main()
......
305 307
	sta_tsk(ID_roue);
306 308
	sta_tsk(ID_zone);
307 309
	sta_tsk(ID_saut);
308

  
310
//	sta_tsk(ID_pistenoire);
309 311
	
310 312
    while(1)
311 313
    {

Also available in: Unified diff