Line 193... |
Line 193... |
193 |
} |
193 |
} |
194 |
} |
194 |
} |
195 |
while(cpixel<102); // precte 102 pixelu |
195 |
while(cpixel<102); // precte 102 pixelu |
196 |
} |
196 |
} |
197 |
|
197 |
|
- |
|
198 |
void olsa_position() |
- |
|
199 |
{ |
- |
|
200 |
int8 searchp; // ukazatel na pole |
- |
|
201 |
int8 search; // ulozeni prectene hodnoty |
- |
|
202 |
int1 segment; // cara je vlevo nebo vpravo |
- |
|
203 |
int8 position; // ulozeni pozice cary |
- |
|
204 |
int8 protect_count; // opravdu vidime caru |
- |
|
205 |
position=0; |
- |
|
206 |
read_olsa(); |
- |
|
207 |
for(searchp=0;searchp<52;searchp++) // prohlizi levou cast cary |
- |
|
208 |
{ |
- |
|
209 |
search=olsa_lseg[searchp]; // vybira pixel |
- |
|
210 |
if(search==OLSA_LEV) // cerna nebo bila? |
- |
|
211 |
{ |
- |
|
212 |
protect_count++; // pokud nasleduje cerna, pricte 1 k poctu cernych pixelu |
- |
|
213 |
} |
- |
|
214 |
else |
- |
|
215 |
{ |
- |
|
216 |
protect_count=0; // pokud nasleduje bila, pocet cernych pixelu vynuluje |
- |
|
217 |
} |
- |
|
218 |
if(protect_count>LINE_PX) // vidim caru |
- |
|
219 |
{ |
- |
|
220 |
position=searchp; // zapis presnou pozici |
- |
|
221 |
segment=LEFT; // cara je v leve polovine |
- |
|
222 |
searchp=55; // ukonci hledani |
- |
|
223 |
} |
- |
|
224 |
} |
- |
|
225 |
for(searchp=0;searchp<52;searchp++) // prohlizi pravou cast cary |
- |
|
226 |
{ |
- |
|
227 |
search=olsa_rseg[searchp]; // vybira pixel |
- |
|
228 |
if(search==OLSA_LEV) |
- |
|
229 |
{ |
- |
|
230 |
protect_count++; // pokud nasleduje cerna, pricte 1 k poctu cernych pixelu |
- |
|
231 |
} |
- |
|
232 |
else |
- |
|
233 |
{ |
- |
|
234 |
protect_count=0; // pokud nasleduje bila, pocet cernych pixelu vynuluje |
- |
|
235 |
} |
- |
|
236 |
if(protect_count>LINE_PX) // vidim caru |
- |
|
237 |
{ |
- |
|
238 |
position=(searchp+50); // zapis presnou pozici |
- |
|
239 |
segment=RIGHT; // cara je v prave polovine |
- |
|
240 |
searchp=55; // ukonci hledani |
- |
|
241 |
} |
- |
|
242 |
} |
- |
|
243 |
printf("poloha: %u\r\n",position); |
- |
|
244 |
} |
- |
|
245 |
|
198 |
//ZACHRANNE SENZORY |
246 |
//ZACHRANNE SENZORY |
199 |
void read_blue_sensors() // cteni nouzovych senzoru |
247 |
void read_blue_sensors() // cteni nouzovych senzoru |
200 |
{ |
248 |
{ |
201 |
set_adc_channel(LINEL); // cti levy nouzovy senzor |
249 |
set_adc_channel(LINEL); // cti levy nouzovy senzor |
202 |
delay_us(10); |
250 |
delay_us(10); |
Line 407... |
Line 455... |
407 |
delay_ms(500); |
455 |
delay_ms(500); |
408 |
printf("VYBRAT MOD... \r\n"); |
456 |
printf("VYBRAT MOD... \r\n"); |
409 |
while(true) |
457 |
while(true) |
410 |
{ |
458 |
{ |
411 |
//diag(); |
459 |
//diag(); |
412 |
read_olsa(); |
- |
|
413 |
int8 searchp; // ukazatel na pole |
- |
|
414 |
int8 search; // ulozeni prectene hodnoty |
- |
|
415 |
int1 segment; // cara je vlevo nebo vpravo |
- |
|
416 |
int8 position; // ulozeni pozice cary |
- |
|
417 |
int8 protect_count; // opravdu vidime caru |
- |
|
418 |
|
- |
|
419 |
for(searchp=0;searchp<52;searchp++) // prohlizi levou cast cary |
- |
|
420 |
{ |
- |
|
421 |
search=olsa_lseg[searchp]; // vybira pixel |
- |
|
422 |
if(search==OLSA_LEV) // cerna nebo bila? |
- |
|
423 |
{ |
- |
|
424 |
protect_count++; // pokud nasleduje cerna, pricte 1 k poctu cernych pixelu |
- |
|
425 |
} |
- |
|
426 |
else |
- |
|
427 |
{ |
- |
|
428 |
protect_count=0; // pokud nasleduje bila, pocet cernych pixelu vynuluje |
- |
|
429 |
} |
- |
|
430 |
if(protect_count>LINE_PX) // vidim caru |
- |
|
431 |
{ |
- |
|
432 |
position=searchp; // zapis presnou pozici |
- |
|
433 |
segment=LEFT; // cara je v leve polovine |
- |
|
434 |
searchp=55; // ukonci hledani |
- |
|
435 |
} |
- |
|
436 |
} |
- |
|
437 |
for(searchp=0;searchp<52;searchp++) // prohlizi pravou cast cary |
- |
|
438 |
{ |
- |
|
439 |
search=olsa_rseg[searchp]; // vybira pixel |
- |
|
440 |
if(search==OLSA_LEV) |
- |
|
441 |
{ |
- |
|
442 |
protect_count++; // pokud nasleduje cerna, pricte 1 k poctu cernych pixelu |
- |
|
443 |
} |
- |
|
444 |
else |
- |
|
445 |
{ |
- |
|
446 |
protect_count=0; // pokud nasleduje bila, pocet cernych pixelu vynuluje |
- |
|
447 |
} |
- |
|
448 |
if(protect_count>LINE_PX) // vidim caru |
- |
|
449 |
{ |
- |
|
450 |
position=(searchp+50); // zapis presnou pozici |
- |
|
451 |
segment=RIGHT; // cara je v prave polovine |
- |
|
452 |
searchp=55; // ukonci hledani |
- |
|
453 |
} |
- |
|
454 |
} |
- |
|
455 |
printf("poloha: %u\r\n",position); |
- |
|
456 |
position=0; |
460 |
olsa_position(); |
457 |
} |
461 |
} |
458 |
} |
462 |
} |
459 |
|
463 |
|
- |
|
464 |
|