Rev 868 Rev 869
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