Line 6... |
Line 6... |
6 |
// pomocne konstanty |
6 |
// pomocne konstanty |
7 |
#define LEFT 0 |
7 |
#define LEFT 0 |
8 |
#define RIGHT 1 |
8 |
#define RIGHT 1 |
9 |
|
9 |
|
10 |
// konstanty a promenne pro sledovani cary |
10 |
// konstanty a promenne pro sledovani cary |
11 |
#define SPACE 15 // urcuje, za jak dlouho robot vi, ze nic nevidi |
11 |
#define SPACE 20 // urcuje, za jak dlouho robot vi, ze nic nevidi |
12 |
#define SPD1 100 // rychlost pomalejsiho motoru, kdyz je cara hodne z osy |
12 |
#define SPD1 100 // rychlost pomalejsiho motoru, kdyz je cara hodne z osy |
13 |
#define SPD2 150 // rychlost pomalejsiho motoru, kdyz je cara z osy |
13 |
#define SPD2 150 // rychlost pomalejsiho motoru, kdyz je cara z osy |
14 |
#define SPD3 200 // rychlost rychlejsiho motoru pro vsechny pripady |
14 |
#define SPD3 200 // rychlost rychlejsiho motoru pro vsechny pripady |
15 |
#define SPD4 255 // pro oba motory - rovinka |
15 |
#define SPD4 255 // pro oba motory - rovinka |
16 |
// oblasti cary |
16 |
// oblasti cary |
Line 477... |
Line 477... |
477 |
olsa_setup(); |
477 |
olsa_setup(); |
478 |
beep(100,500); // pipni pri startu |
478 |
beep(100,500); // pipni pri startu |
479 |
printf("OK! \r\n"); |
479 |
printf("OK! \r\n"); |
480 |
delay_ms(500); |
480 |
delay_ms(500); |
481 |
printf("VYBRAT MOD... \r\n"); |
481 |
printf("VYBRAT MOD... \r\n"); |
- |
|
482 |
// ============================ HLAVNI CAST PROGRAMU =========================== |
482 |
while(true) |
483 |
while(true) |
483 |
{ |
484 |
{ |
- |
|
485 |
// ================================ DIAGNOSTIKA ================================ |
- |
|
486 |
if(BUMPL) |
- |
|
487 |
{ |
- |
|
488 |
beep(100,500); |
- |
|
489 |
while(true) |
- |
|
490 |
{ |
- |
|
491 |
diag(); |
- |
|
492 |
} |
- |
|
493 |
} |
484 |
// ============================ HLAVNI CAST PROGRAMU =========================== |
494 |
// =============================== SLEDOVANI CARY ============================== |
485 |
if(BUMPR) // spusteni hledani pravym naraznikem |
495 |
if(BUMPR) // spusteni hledani pravym naraznikem |
486 |
{ |
496 |
{ |
487 |
beep(100,500); |
497 |
beep(100,500); |
488 |
while(true) |
498 |
while(true) |
489 |
{ |
499 |
{ |
490 |
// =============================== SLEDOVANI CARY ============================== |
- |
|
491 |
old_position=position; // zaznamena predhozi polohu cary |
500 |
old_position=position; // zaznamena predhozi polohu cary |
492 |
read_olsa(); // precte a ulozi hodnoty z olsa |
501 |
read_olsa(); // precte a ulozi hodnoty z olsa |
493 |
olsa_position(); // vyhodnoti pozici cary |
502 |
olsa_position(); // vyhodnoti pozici cary |
494 |
read_blue_sensors(); // cte nouzove senzory |
503 |
read_blue_sensors(); // cte nouzove senzory |
495 |
if((line_l==0)&&(gap>SPACE)) // robot najede na levy nouzovy senzor |
504 |
if((line_l==0)&&(gap>SPACE)) // robot najede na levy nouzovy senzor |
496 |
{ |
505 |
{ |
497 |
l_motor_bwd(150); // prudce zatoc doleva |
506 |
l_motor_bwd(150); // prudce zatoc doleva |
498 |
r_motor_fwd(255); |
507 |
r_motor_fwd(255); |
499 |
line_sector=LEFT; // pamatuj, kde je cara |
508 |
line_sector=LEFT; // pamatuj, kde je cara |
500 |
delay_ms(200); |
509 |
delay_ms(300); |
501 |
} |
510 |
} |
502 |
if((line_r==0)&&(gap>SPACE)) // robot najede na pravy nouzovy senzor |
511 |
if((line_r==0)&&(gap>SPACE)) // robot najede na pravy nouzovy senzor |
503 |
{ |
512 |
{ |
504 |
l_motor_fwd(255); // prudce zatoc doprava |
513 |
l_motor_fwd(255); // prudce zatoc doprava |
505 |
r_motor_bwd(150); |
514 |
r_motor_bwd(150); |
506 |
line_sector=RIGHT; // pamatuj, kde je cara |
515 |
line_sector=RIGHT; // pamatuj, kde je cara |
507 |
delay_ms(200); |
516 |
delay_ms(300); |
508 |
} |
517 |
} |
509 |
if(position==0) // pokud neni videt cara |
518 |
if(position==0) // pokud neni videt cara |
510 |
{ |
519 |
{ |
511 |
position=old_position; // nastav predchozi pozici |
520 |
position=old_position; // nastav predchozi pozici |
512 |
gap++; // pocita, jak dlouho neni videt cara |
521 |
gap++; // pocita, jak dlouho neni videt cara |