50,17 → 50,17 |
{ |
disp(i); |
rotate_left(&i, 1); |
delay_ms(50); |
delay_ms(100); |
} |
for(n=0;n<7;n++) |
{ |
disp(i); |
rotate_right(&i, 1); |
delay_ms(50); |
delay_ms(100); |
} |
} |
disp(i); |
delay_ms(30); |
delay_ms(100); |
i=0; |
disp(i); |
} |
115,13 → 115,14 |
i2c_write(0x05); |
i2c_write(0xA0); // 48h |
i2c_stop(); |
|
*/ |
i2c_start(); // Brightness |
i2c_write(0xC0); |
i2c_write(0x06); |
i2c_write(0x0); // 80h //9Ah |
i2c_write(0x9A); // 80h |
i2c_stop(); |
|
/* |
i2c_start(); // Band Filter |
i2c_write(0xC0); |
i2c_write(0x2D); |
128,71 → 129,30 |
i2c_write(0x04 | 0x03); |
i2c_stop(); |
*/ |
|
i2c_start(); // Fame Rate |
i2c_write(0xC0); |
i2c_write(0x2B); |
i2c_write(0x00); // cca 17ms (puvodni hodnota 5Eh = 20ms) |
i2c_stop(); |
|
i2c_start(); // VSTRT |
i2c_write(0xC0); |
i2c_write(0x19); |
i2c_write(118); // prostredni radka |
i2c_write(45); |
i2c_stop(); |
|
i2c_start(); // VEND |
i2c_write(0xC0); |
i2c_write(0x1A); |
i2c_write(118); |
i2c_write(45); |
i2c_stop(); |
|
NightRider(1); // Musi se dat cas kamere na AGC a AEC |
|
{ // Kalibrace kamery |
int8 t1,t2; |
|
for(offset=0;offset<=255;offset+=0x04) // Cita porad dokola |
{ |
i2c_start(); // Brightness |
i2c_write(0xC0); |
i2c_write(0x06); |
i2c_write(offset); // 80h default |
i2c_stop(); |
disp(offset); |
delay_ms(100); |
|
t1=0; |
t2=0; |
while(!input(HREF)); // Cekej nez se zacnou posilat pixely z radky |
delay_ms(5); |
while(!input(HREF)); // Cekej nez se zacnou posilat pixely z radky |
set_timer0(0); // Vynuluj pocitadlo casu |
if(!input(PIX)) continue; |
while(input(PIX)); |
t1=get_timer0(); // Precti cas z citace casu hrany |
set_timer0(0); // Vynuluj pocitadlo casu |
while(!input(PIX)); |
t2=get_timer0(); |
|
if((t1>60) && (t1<140) && (t2>5) && (t2<=10)) break; |
|
delay_ms(2); |
} |
} |
|
delay_ms(1000); |
|
cas=128; // Inicializace promenych, aby neslo servo za roh a aby se to rozjelo jeste dneska |
stav=start; |
trasa=0; |
|
|
// ... Hlavni smycka ... |
while(true) |
{ |
int8 pom; |
int8 n; |
|
|
pom=0; |
while(!input(HREF)); // Cekej nez se zacnou posilat pixely z radky |
set_timer0(0); // Vynuluj pocitadlo casu |
201,7 → 161,7 |
// !!!!Dodelat rozpoznani cerne cary napric pro zastaveni |
if(!input(PIX)) // Pokud se 3x za sebou precetla CERNA |
if(!input(PIX)) |
// if(!input(PIX)) |
if(!input(PIX)) |
{ |
pom=get_timer0(); // Precti cas z citace casu hrany |
break; |
229,11 → 189,14 |
Delay_ms(1); |
rr=read_adc()>>2; //!!! // 0-31 |
|
disp(cas & 0b11110000); |
|
// Elektronicky diferencial |
if(cas<CASAVR) {r1=cas-CASMIN; r2=CASAVR-CASMIN;}; // Normovani vystupni hodnoty radkoveho snimace |
if(cas==CASAVR) {r1=cas-CASMIN; r2=cas-CASMIN;}; // pro rizeni rychlosti motoru |
if(cas>CASAVR) {r1=CASAVR-CASMIN; r2=CASMAX-cas;}; // Rozsah 1 az 92 |
|
|
if (r1>(CASAVR-CASMIN-rr)) r1=(r1<<1)+rr-(CASAVR-CASMIN); // Neco jako nasobeni |
if (r2>(CASAVR-CASMIN-rr)) r2=(r2<<1)+rr-(CASAVR-CASMIN); |
|
254,12 → 217,12 |
|
set_adc_channel(DALKOMER); // Prepni A/D prevodnik na detektor cihly |
Delay_ms(1); |
for(n=0;n<200;n++) // Detekce prekazky |
for(n=0;n<5;n++) // Detekce prekazky |
{ |
if(read_adc()<128) |
{ |
if(stav==start) |
{ |
{ |
disp(0x55); |
while(read_adc()<128); // Cekej, dokud starter neda ruku pryc |
set_pwm1_duty(255); |
275,7 → 238,7 |
set_pwm2_duty(0); |
output_high(MOT_L); // zabrzdi |
output_high(MOT_R); |
delay_ms(300); |
delay_ms(300); |
output_low(MOT_L); // zastav |
output_low(MOT_R); |
stav=cil; |
284,16 → 247,5 |
} |
} |
|
pom=0x80; |
for(n=CASMAX/8; n<cas; n+=CASMAX/8) |
{ |
pom>>=1; |
} |
disp(pom); |
|
output_high(PIN_C0); |
delay_ms(1); |
output_low(PIN_C0); |
|
}; |
} |