| Line 4... |
Line 4... |
| 4 |
// BAUD RATE = 9600 |
4 |
// BAUD RATE = 9600 |
| 5 |
// ========================== PRIPRAVA DAT A VYSTUPU =========================== |
5 |
// ========================== PRIPRAVA DAT A VYSTUPU =========================== |
| 6 |
// pomocne konstanty |
6 |
// pomocne konstanty |
| 7 |
#define LEFT 0 |
7 |
#define LEFT 0 |
| 8 |
#define RIGHT 1 |
8 |
#define RIGHT 1 |
| - |
|
9 |
#define BLACK 0 |
| - |
|
10 |
#define WHITE 255 |
| 9 |
|
11 |
|
| 10 |
// regulator |
12 |
// regulator |
| 11 |
#define CONP 2 // konstanta pro proporcionalni regulator |
13 |
#define CONP 2 // konstanta pro proporcionalni regulator |
| 12 |
#define CONI 45 // konstanta pro integracni regulator *0,01 |
14 |
#define CONI 45 // konstanta pro integracni regulator *0,01 |
| 13 |
#define COND 20 // konstanta pro derivacni regulator *0,01 |
15 |
#define COND 20 // konstanta pro derivacni regulator *0,01 |
| Line 22... |
Line 24... |
| 22 |
int8 err4; |
24 |
int8 err4; |
| 23 |
int8 err5; // odchylka posledni hodnoty |
25 |
int8 err5; // odchylka posledni hodnoty |
| 24 |
int8 errp; // prumer chyb |
26 |
int8 errp; // prumer chyb |
| 25 |
|
27 |
|
| 26 |
// mezera |
28 |
// mezera |
| 27 |
#define SPACE 20 |
29 |
#define SPACE 10 |
| 28 |
|
30 |
|
| 29 |
// univerzalni LED diody |
31 |
// univerzalni LED diody |
| 30 |
#define LED1 PIN_E1 |
32 |
#define LED1 PIN_E1 |
| 31 |
#define LED2 PIN_E0 |
33 |
#define LED2 PIN_E0 |
| 32 |
|
34 |
|
| Line 68... |
Line 70... |
| 68 |
int8 *lp; // ukazatel pro levou polovinu radky |
70 |
int8 *lp; // ukazatel pro levou polovinu radky |
| 69 |
int8 *rp; // ukazatel pro levou polovinu radky |
71 |
int8 *rp; // ukazatel pro levou polovinu radky |
| 70 |
|
72 |
|
| 71 |
int8 position; // ulozeni pozice cary |
73 |
int8 position; // ulozeni pozice cary |
| 72 |
int8 old_position; // ulozeni predchozi pozice cary |
74 |
int8 old_position; // ulozeni predchozi pozice cary |
| 73 |
int8 l_position; |
- |
|
| 74 |
int8 r_position; |
- |
|
| 75 |
int1 line_sector; // cara je vlevo/vpravo |
75 |
int1 line_sector; // cara je vlevo/vpravo |
| 76 |
int8 gap; // pocita, jak dlouho neni videt cara |
76 |
int8 gap; // pocita, jak dlouho neni videt cara |
| 77 |
|
77 |
|
| 78 |
// ================================= NARAZNIK ================================== |
78 |
// ================================= NARAZNIK ================================== |
| 79 |
#define BUMPL input(PIN_D6) |
79 |
#define BUMPL input(PIN_D6) |
| Line 567... |
Line 567... |
| 567 |
} |
567 |
} |
| 568 |
else // pokud je videt |
568 |
else // pokud je videt |
| 569 |
{ |
569 |
{ |
| 570 |
gap=0; // gap je roven nule |
570 |
gap=0; // gap je roven nule |
| 571 |
} |
571 |
} |
| - |
|
572 |
if(gap>space) // cara neni urcite videt |
| - |
|
573 |
{ |
| - |
|
574 |
if(line_l==BLACK) // cara videna levym modrym senzorem |
| - |
|
575 |
{ |
| - |
|
576 |
position=1; |
| - |
|
577 |
} |
| - |
|
578 |
if(line_r==BLACK) // cara videna pravym modrym senzorem |
| - |
|
579 |
{ |
| - |
|
580 |
position=99; |
| - |
|
581 |
} |
| - |
|
582 |
} |
| 572 |
calc_error(); |
583 |
calc_error(); |
| 573 |
calc_regulator(); |
584 |
calc_regulator(); |
| 574 |
//printf("regulator: %u\r\n",reg_out); |
585 |
//printf("regulator: %u\r\n",reg_out); |
| 575 |
if(position<50) |
586 |
if(position<50) |
| 576 |
{ |
587 |
{ |