| 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 |
|