44,8 → 44,8 |
enum stavy {start,rozjezd,jizda,cihla,cil}; |
stavy stav; // Kde jsme na trati |
int8 cas; // Cas hrany bila/cerna v radce |
int8 stred; // vystredeni kolecka |
|
|
inline void brzda() |
{ |
int8 n,i; |
79,15 → 79,11 |
|
for(n=0; n<14; n++) |
{ |
set_adc_channel(MODRA); // Kroutitko na vystredeni predniho kolecka |
Delay_ms(1); |
offset=read_adc(); |
|
output_high(SERVO); // Odvysilani impuzu 1 az 2ms pro servo |
delay_us(1000); |
delay_us(offset); |
delay_us(offset); |
delay_us(offset); |
delay_us(stred); |
delay_us(stred); |
delay_us(stred); |
delay_us(angle); |
delay_us(angle); |
output_low(SERVO); |
99,7 → 95,7 |
EXT_isr() // Preruseni od prekazky |
{ |
int8 i; |
|
|
set_pwm1_duty(0); // reverz (zabrzdi) |
set_pwm2_duty(0); |
output_high(MOT_L); // vzad |
122,10 → 118,11 |
return; |
}; |
|
set_adc_channel(DALKOMER); // Prepni A/D prevodnik na detektor cihly |
SetServo((CASAVR-CASMIN)); // rovne |
|
set_pwm1_duty(140); // vpred |
set_pwm2_duty(140); |
set_pwm1_duty(100); // vpred |
set_pwm2_duty(100); |
output_low(MOT_L); |
output_low(MOT_R); |
i=0; |
135,8 → 132,8 |
while(!input(ODO)); |
i++; |
if(i==8) return; // nedojeli jsme k cihle, jed dal |
} |
brzdi: |
}; |
brzdi: |
set_pwm1_duty(0); // reverz (zabrzdi) |
set_pwm2_duty(0); |
output_high(MOT_L); |
333,7 → 330,7 |
stav=start; |
trasa=0; |
|
// ... Hlavni smycka ... |
// ......... Hlavni smycka ......... |
while(true) |
{ |
int8 pom; |
359,15 → 356,11 |
// Na konci obrazovaho radku to blbne. Jednak chyba od apertury |
// a vubec to nejak na kraji nefunguje. |
|
set_adc_channel(MODRA); // Kroutitko na vystredeni predniho kolecka |
Delay_ms(1); |
offset=read_adc(); |
|
output_high(SERVO); // Odvysilani impuzu 1 az 2ms pro servo |
delay_us(1000); |
delay_us(offset); |
delay_us(offset); |
delay_us(offset); |
delay_us(stred); |
delay_us(stred); |
delay_us(stred); |
delay_us(cas); |
delay_us(cas); |
output_low(SERVO); |
395,9 → 388,6 |
set_pwm2_duty(0); |
} |
|
set_adc_channel(DALKOMER); // Prepni A/D prevodnik na detektor cihly |
Delay_ms(1); |
|
if((stav==jizda)&&(trasa>50)) // musi to alespon 1s jet |
{ |
ext_int_edge(H_TO_L); // Nastav podminky preruseni od cihly |
407,15 → 397,22 |
}; |
|
if(stav==start) // Snimkuje, toci servem a ceka na start |
if(read_adc()<128) |
{ |
disp(0x80); |
while(read_adc()<128); // Cekej, dokud starter neda ruku pryc |
set_pwm1_duty(255); // Rychly rozjezd !!! Zkontrolovat na oscyloskopu |
set_pwm2_duty(255); |
disp(0x1); |
delay_ms(400); |
stav=jizda; |
set_adc_channel(MODRA); // Kroutitko na vystredeni predniho kolecka |
Delay_ms(1); |
stred=read_adc(); |
set_adc_channel(DALKOMER); // Prepni A/D prevodnik na detektor cihly |
Delay_ms(1); |
if(read_adc()<128) |
{ |
disp(0x80); |
while(read_adc()<128); // Cekej, dokud starter neda ruku pryc |
set_pwm1_duty(255); // Rychly rozjezd !!! Zkontrolovat na oscyloskopu |
set_pwm2_duty(255); |
disp(0x1); |
delay_ms(400); |
stav=jizda; |
}; |
} |
|
pom=0x80; // Zobrazeni pozice cary na displayi |