193 |
kakl |
1 |
// **** Objeti cihly vpravo **** RRRR
|
|
|
2 |
|
204 |
kakl |
3 |
set_adc_channel(RMAX);
|
|
|
4 |
|
193 |
kakl |
5 |
SetServo(CASMIN); // max. doleva L
|
|
|
6 |
set_pwm1_duty(0); // vzad
|
196 |
kakl |
7 |
set_pwm2_duty(10);
|
193 |
kakl |
8 |
output_low(MOT_L);
|
|
|
9 |
output_high(MOT_R);
|
198 |
kakl |
10 |
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
|
204 |
kakl |
11 |
while(get_timer1()<(odocounter+8)); // Popojed definovanou vzdalenost
|
193 |
kakl |
12 |
set_pwm1_duty(0); // reverz (zabrzdi)
|
|
|
13 |
set_pwm2_duty(255);
|
|
|
14 |
output_low(MOT_L);
|
|
|
15 |
output_low(MOT_R);
|
196 |
kakl |
16 |
delay_ms(215);
|
193 |
kakl |
17 |
brzda();
|
|
|
18 |
|
|
|
19 |
SetServo((CASAVR-CASMIN)); // rovne S
|
196 |
kakl |
20 |
set_pwm1_duty(160); // vpred
|
|
|
21 |
set_pwm2_duty(160);
|
193 |
kakl |
22 |
output_low(MOT_L);
|
|
|
23 |
output_low(MOT_R);
|
198 |
kakl |
24 |
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
|
204 |
kakl |
25 |
while(get_timer1()<(odocounter+5)); // Popojed definovanou vzdalenost
|
193 |
kakl |
26 |
|
204 |
kakl |
27 |
SetServoQ((CASAVR-CASMIN)-20);
|
198 |
kakl |
28 |
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
|
204 |
kakl |
29 |
while(get_timer1()<(odocounter+4)); // Popojed definovanou vzdalenost
|
|
|
30 |
set_pwm1_duty(140);
|
|
|
31 |
set_pwm1_duty(120);
|
193 |
kakl |
32 |
|
204 |
kakl |
33 |
SetServoQ((CASAVR-CASMIN)-30);
|
198 |
kakl |
34 |
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
|
204 |
kakl |
35 |
while(get_timer1()<(odocounter+4)); // Popojed definovanou vzdalenost
|
|
|
36 |
set_pwm1_duty(100);
|
193 |
kakl |
37 |
|
204 |
kakl |
38 |
SetServoQ((CASAVR-CASMIN)-60);
|
198 |
kakl |
39 |
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
|
204 |
kakl |
40 |
while(get_timer1()<(odocounter+4)); // Popojed definovanou vzdalenost
|
|
|
41 |
set_pwm1_duty(80);
|
200 |
kakl |
42 |
|
204 |
kakl |
43 |
SetServoQ((CASAVR-CASMIN)-40);
|
|
|
44 |
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
|
|
|
45 |
while(get_timer1()<(odocounter+4)); // Popojed definovanou vzdalenost
|
|
|
46 |
set_pwm1_duty(80);
|
193 |
kakl |
47 |
|
204 |
kakl |
48 |
SetServoQ((CASAVR-CASMIN)-70);
|
198 |
kakl |
49 |
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
|
204 |
kakl |
50 |
while(get_timer1()<(odocounter+4)); // Popojed definovanou vzdalenost
|
|
|
51 |
set_pwm1_duty(80);
|
|
|
52 |
|
|
|
53 |
SetServoQ((CASAVR-CASMIN)-60);
|
|
|
54 |
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
|
|
|
55 |
while(get_timer1()<(odocounter+4)); // Popojed definovanou vzdalenost
|
|
|
56 |
set_pwm1_duty(100);
|
|
|
57 |
|
|
|
58 |
SetServoQ((CASAVR-CASMIN)-30);
|
|
|
59 |
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
|
|
|
60 |
while(get_timer1()<(odocounter+4)); // Popojed definovanou vzdalenost
|
|
|
61 |
set_pwm1_duty(120);
|
|
|
62 |
|
|
|
63 |
SetServoQ((CASAVR-CASMIN)); // Rovne
|
|
|
64 |
set_pwm1_duty(80); // vpred
|
|
|
65 |
set_pwm2_duty(80);
|
|
|
66 |
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
|
|
|
67 |
while(get_timer1()<(odocounter+10)) // Popojed definovanou vzdalenos
|
200 |
kakl |
68 |
{
|
204 |
kakl |
69 |
if(read_adc()<128) break; // Neprejeli jsme caru?
|
|
|
70 |
};
|
193 |
kakl |
71 |
set_pwm1_duty(0); // reverz (zabrzdi)
|
|
|
72 |
set_pwm2_duty(0);
|
|
|
73 |
output_high(MOT_L);
|
|
|
74 |
output_high(MOT_R);
|
204 |
kakl |
75 |
delay_ms(300);
|
193 |
kakl |
76 |
brzda();
|
|
|
77 |
|
200 |
kakl |
78 |
SetServo(CASMIN); // max. doleva L
|
|
|
79 |
set_pwm1_duty(0); // vzad
|
|
|
80 |
set_pwm2_duty(10);
|
196 |
kakl |
81 |
output_low(MOT_L);
|
200 |
kakl |
82 |
output_high(MOT_R);
|
|
|
83 |
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
|
|
|
84 |
while(get_timer1()<(odocounter+10)) // Popojed definovanou vzdalenost
|
|
|
85 |
{
|
204 |
kakl |
86 |
if(read_adc()<128) break; // Neprejeli jsme caru?
|
200 |
kakl |
87 |
};
|
202 |
kakl |
88 |
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
|
204 |
kakl |
89 |
while(get_timer1()<(odocounter+3)); // Jeste trochu doprava, aby byla cara mezi krajnimi cidly
|
200 |
kakl |
90 |
set_pwm1_duty(0); // reverz (zabrzdi)
|
|
|
91 |
set_pwm2_duty(255);
|
|
|
92 |
output_low(MOT_L);
|
196 |
kakl |
93 |
output_low(MOT_R);
|
200 |
kakl |
94 |
delay_ms(200);
|
|
|
95 |
brzda();
|
196 |
kakl |
96 |
|
200 |
kakl |
97 |
SetServo((CASAVR-CASMIN)); // rovne S
|
204 |
kakl |
98 |
set_pwm1_duty(255); // Rozjezd na plny vykon vpred
|
200 |
kakl |
99 |
set_pwm2_duty(255);
|
|
|
100 |
output_low(MOT_L);
|
|
|
101 |
output_low(MOT_R);
|
204 |
kakl |
102 |
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
|
|
|
103 |
while(get_timer1()<(odocounter+2)) // Uz jedeme? (prekonani sertvacne sily)
|
|
|
104 |
{
|
|
|
105 |
set_adc_channel(LMAX); // Levy UV sensor
|
|
|
106 |
delay_us(40);
|
|
|
107 |
if(read_adc()<128) {cas=CASMIN; break;}; // Prejeli jsme caru vlevo
|
|
|
108 |
set_adc_channel(RMAX); // Pravy UV sensor
|
|
|
109 |
delay_us(40);
|
|
|
110 |
if(read_adc()<128) {cas=CASMAX; break;}; // Prejeli jsme caru vpravo
|
|
|
111 |
cas=CASAVR-CASMIN; // Cara je rovne
|
|
|
112 |
};
|
200 |
kakl |
113 |
|
204 |
kakl |
114 |
stav=cihla; // Stav po objeti cihly, uz zadna cihla asi nebude
|
|
|
115 |
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
|
|
|
116 |
rr=60; // Nerozumna rychlost pro rozjeti
|