Rev 956 Rev 957
Line 230... Line 230...
230 } 230 }
231   231  
232 void olsa_position() // vyhodnoti pozici cary 232 void olsa_position() // vyhodnoti pozici cary
233 { 233 {
234 int8 searchp; // ukazatel na pole 234 int8 searchp; // ukazatel na pole
235 int8 search; // ulozeni prectene hodnoty -  
236 int8 dark; // nejtmavsi pixel 235 int8 dark; // nejtmavsi pixel
237 int8 bright; // nejsvetlejsi pixel 236 int8 bright; // nejsvetlejsi pixel
238 dark=0xff; 237 dark=0xff;
239 bright=0x00; 238 bright=0x00;
240 for(searchp=0;searchp<52;searchp++) // prohlizi levou cast radky 239 for(searchp=0;searchp<51;searchp++) // prohlizi levou cast radky
241 { 240 {
242 search=olsa_lseg[searchp]; // vybira pixel -  
243 if((search<dark)&&(search>0x00)) // porovna pixel s doposud nejtmavsim 241 if(olsa_lseg[searchp]<dark) // porovna pixel s doposud nejtmavsim
244 { 242 {
245 dark=search; // ulozi nejtmavsi pixel 243 dark=olsa_lseg[searchp]; // ulozi nejtmavsi pixel
246 position=searchp; // ulozi polohu nejtmavsiho pixelu 244 position=searchp; // ulozi polohu nejtmavsiho pixelu
247 } 245 }
248 if((search>bright)&&(search<0xff)) 246 if(olsa_lseg[searchp]>bright)
249 { 247 {
250 bright=search; // ulozi nejsvetlejsi pixel 248 bright=olsa_lseg[searchp]; // ulozi nejsvetlejsi pixel
251 } 249 }
252 } 250 }
253 for(searchp=0;searchp<52;searchp++) // prohlizi pravou cast radky 251 for(searchp=0;searchp<49;searchp++) // prohlizi levou cast radky
254 { 252 {
255 search=olsa_rseg[searchp]; // vybira pixel -  
256 if((search<dark)&&(search>0x00)) // porovna pixel s doposud nejtmavsim 253 if(olsa_rseg[searchp]<dark) // porovna pixel s doposud nejtmavsim
257 { 254 {
258 dark=search; // ulozi nejtmavsi pixel 255 dark=olsa_rseg[searchp]; // ulozi nejtmavsi pixel
259 position=(searchp+50); // ulozi polohu nejtmavsiho pixelu 256 position=(searchp+51); // ulozi polohu nejtmavsiho pixelu
260 } 257 }
261 if((search>bright)&&(search<0xff)) 258 if(olsa_rseg[searchp]>bright)
262 { 259 {
263 bright=search; // ulozi nejsvetlejsi pixel 260 bright=olsa_rseg[searchp]; // ulozi nejsvetlejsi pixel
264 } 261 }
265 } 262 }
266 contrast=(bright-dark); 263 contrast=(bright-dark);
267 if(contrast<CONT) 264 if(contrast<CONT)
268 { 265 {
Line 461... Line 458...
461 { 458 {
462 l_motor_bwd(255); // zatoc doleva 459 l_motor_bwd(255); // zatoc doleva
463 r_motor_fwd(255); 460 r_motor_fwd(255);
464 delay_ms(350); 461 delay_ms(350);
465 l_motor_fwd(255); // jed rovne 462 l_motor_fwd(255); // jed rovne
466 delay_ms(1000); 463 delay_ms(800);
467 r_motor_bwd(255); // zatoc doprava 464 r_motor_bwd(255); // zatoc doprava
468 delay_ms(350); 465 delay_ms(300);
469 r_motor_fwd(255); // jed rovne 466 r_motor_fwd(255); // jed rovne
470 delay_ms(1000); 467 delay_ms(1200);
471 r_motor_bwd(255); // zatoc doprava 468 r_motor_bwd(255); // zatoc doprava
472 delay_ms(300); 469 delay_ms(200);
473 r_motor_fwd(255); // jed rovne 470 r_motor_fwd(255); // jed rovne
474 delay_ms(800); 471 delay_ms(200);
475 position=40; 472 position=40;
476 } 473 }
477 // ================================ DIAGNOSTIKA ================================ 474 // ================================ DIAGNOSTIKA ================================
478   475  
479 void diag() // diagnostika - vypis senzoru s moznosti prepnuti na test motoru 476 void diag() // diagnostika - vypis senzoru s moznosti prepnuti na test motoru
Line 622... Line 619...
622 if(line_sector==RIGHT) 619 if(line_sector==RIGHT)
623 { 620 {
624 position=99; 621 position=99;
625 } 622 }
626 } 623 }
-   624 if(position<20) // pro ostre zataceni
-   625 {
-   626 position=1;
-   627 }
-   628 if(position>80) // pro ostre zataceni
-   629 {
-   630 position=100;
-   631 }
627 calc_error(); 632 calc_error();
628 calc_regulator(); 633 calc_regulator();
629 //printf("regulator: %u\r\n",reg_out); 634 //printf("regulator: %u\r\n",reg_out);
630 if(position<50) // prepocet regulatoru pro motory, pokud je cara vlevo 635 if(position<50) // prepocet regulatoru pro motory, pokud je cara vlevo
631 { 636 {