Rev 871 Rev 872
Line 56... Line 56...
56 #define LINEL 0 56 #define LINEL 0
57 #define LINER 1 57 #define LINER 1
58 #define BLUE_LEV 200 // rozhodovaci uroven (zmereno 0 - cerna, 255 cerna) 58 #define BLUE_LEV 200 // rozhodovaci uroven (zmereno 0 - cerna, 255 cerna)
59 int8 line_l; 59 int8 line_l;
60 int8 line_r; 60 int8 line_r;
61 int1 line_position; 61 int1 line_sector;
62   62  
63 // motory 63 // motory
64 #define LMF PIN_D0 64 #define LMF PIN_D0
65 #define LMB PIN_D1 65 #define LMB PIN_D1
66 #define RMF PIN_D2 66 #define RMF PIN_D2
Line 199... Line 199...
199   199  
200 void olsa_position() // vyhodnoti pozici cary 200 void olsa_position() // vyhodnoti pozici cary
201 { 201 {
202 int8 searchp; // ukazatel na pole 202 int8 searchp; // ukazatel na pole
203 int8 search; // ulozeni prectene hodnoty 203 int8 search; // ulozeni prectene hodnoty
204 int1 segment; // cara je vlevo nebo vpravo -  
205 int8 protect_count; // opravdu vidime caru 204 int8 protect_count; // opravdu vidime caru
206 position=0; // nuluje pozici, pokud cara neni, ulozena 0 205 position=0; // nuluje pozici, pokud cara neni, ulozena 0
207 for(searchp=0;searchp<52;searchp++) // prohlizi levou cast cary 206 for(searchp=0;searchp<52;searchp++) // prohlizi levou cast cary
208 { 207 {
209 search=olsa_lseg[searchp]; // vybira pixel 208 search=olsa_lseg[searchp]; // vybira pixel
Line 216... Line 215...
216 protect_count=0; // pokud nasleduje bila, pocet cernych pixelu vynuluje 215 protect_count=0; // pokud nasleduje bila, pocet cernych pixelu vynuluje
217 } 216 }
218 if(protect_count>LINE_PX) // vidim caru 217 if(protect_count>LINE_PX) // vidim caru
219 { 218 {
220 position=searchp; // zapis presnou pozici 219 position=searchp; // zapis presnou pozici
221 segment=LEFT; // cara je v leve polovine 220 line_sector=RIGHT; // cara je v leve polovine
222 searchp=55; // ukonci hledani 221 searchp=55; // ukonci hledani
223 } 222 }
224 } 223 }
225 for(searchp=0;searchp<52;searchp++) // prohlizi pravou cast cary 224 for(searchp=0;searchp<52;searchp++) // prohlizi pravou cast cary
226 { 225 {
Line 234... Line 233...
234 protect_count=0; // pokud nasleduje bila, pocet cernych pixelu vynuluje 233 protect_count=0; // pokud nasleduje bila, pocet cernych pixelu vynuluje
235 } 234 }
236 if(protect_count>LINE_PX) // vidim caru 235 if(protect_count>LINE_PX) // vidim caru
237 { 236 {
238 position=(searchp+50); // zapis presnou pozici 237 position=(searchp+50); // zapis presnou pozici
239 segment=RIGHT; // cara je v prave polovine 238 line_sector=RIGHT; // cara je v prave polovine
240 searchp=55; // ukonci hledani 239 searchp=55; // ukonci hledani
241 } 240 }
242 } 241 }
243 // printf("poloha: %u\r\n",position); // tiskne pozici - zakomentovat pro hledani -  
244 } 242 }
245   243  
246 //ZACHRANNE SENZORY 244 //ZACHRANNE SENZORY
247 void read_blue_sensors() // cteni nouzovych senzoru 245 void read_blue_sensors() // cteni nouzovych senzoru
248 { 246 {
Line 453... Line 451...
453 printf("OK! \r\n"); 451 printf("OK! \r\n");
454 delay_ms(500); 452 delay_ms(500);
455 printf("VYBRAT MOD... \r\n"); 453 printf("VYBRAT MOD... \r\n");
456 while(true) 454 while(true)
457 { 455 {
-   456 read_olsa(); // precte a ulozi hodnoty z olsa
-   457 olsa_position(); // vyhodnoti pozici cary
458 diag(); 458 read_blue_sensors(); // cte nouzove senzory
-   459 //printf("poloha: %u\r\n",position); // tiskne pozici - zakomentovat pro hledani
459 } 460 }
460 } 461 }
461   462  
462   463