Subversion Repositories svnkaklik

Compare Revisions

Ignore whitespace Rev 180 → Rev 181

/roboti/istrobot/camerus/SW/876/camerus.c
50,17 → 50,17
{
disp(i);
rotate_left(&i, 1);
delay_ms(100);
delay_ms(50);
}
for(n=0;n<7;n++)
{
disp(i);
rotate_right(&i, 1);
delay_ms(100);
delay_ms(50);
}
}
disp(i);
delay_ms(100);
delay_ms(30);
i=0;
disp(i);
}
115,14 → 115,13
i2c_write(0x05);
i2c_write(0xA0); // 48h
i2c_stop();
*/
 
i2c_start(); // Brightness
i2c_write(0xC0);
i2c_write(0x06);
i2c_write(0x9A); // 80h
i2c_write(0x0); // 80h //9Ah
i2c_stop();
 
/*
i2c_start(); // Band Filter
i2c_write(0xC0);
i2c_write(0x2D);
129,30 → 128,71
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(45);
i2c_write(118); // prostredni radka
i2c_stop();
 
i2c_start(); // VEND
i2c_write(0xC0);
i2c_write(0x1A);
i2c_write(45);
i2c_write(118);
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
161,7 → 201,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;
189,14 → 229,11
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);
 
217,12 → 254,12
 
set_adc_channel(DALKOMER); // Prepni A/D prevodnik na detektor cihly
Delay_ms(1);
for(n=0;n<5;n++) // Detekce prekazky
for(n=0;n<200;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);
238,7 → 275,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;
247,5 → 284,16
}
}
 
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);
 
};
}