Subversion Repositories svnkaklik

Compare Revisions

Ignore whitespace Rev 1 → Rev 2

/roboti/istrobot/3Orbis/bak/09 ruzove rukavice/master/objizdka_centrovani.c
0,0 → 1,214
#define DOLEVA 0
#define DOPRAVA 1
 
void cikcak()
{
unsigned int8 i;
 
uhel=KOLMO1;
Delay_ms(100);
if (line==L2) line=L3;
if (line==S) line=L3;
if (line==R2) line=R3;
 
Delay_ms(3);
 
output_low(STROBE); // vypni zobrazovani na posuvnem registru
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
output_high(STROBE); // vypni zobrazovani na posuvnem registru
 
while(!bit_test(sensors,3))
{
while(true)
{
Delay_ms(3);
if (line==L3)
{
GO(L,B,160);GO(R,F,160);
};
if (line==R3)
{
GO(R,B,160);GO(L,F,160);
};
if (line==S) {STOPL;STOPR; i++;}
else i=0;
if (i>=100) break;
output_low(STROBE); // vypni zobrazovani na posuvnem registru
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
output_high(STROBE); // vypni zobrazovani na posuvnem registru
if(bit_test(sensors,3)) //...|...//
{
line=S;
continue;
}
if(bit_test(sensors,0)) //|......// // z duvodu zkraceni doby reakce se cidla nevyhodnocuji poporade ale od krajnich k prostrednimu
{
line=L3;
continue;
}
if(bit_test(sensors,6)) //......|//
{
line=R3;
continue;
}
if(bit_test(sensors,1)) //.|.....//
{
line=L3;
continue;
}
if(bit_test(sensors,5)) //.....|.//
{
line=R3;
continue;
}
if (bit_test(sensors,2)) //..|....//
{
line=L3;
continue;
}
if (bit_test(sensors,4)) //....|..//
{
line=R3;
continue;
}
}
delay_ms(100);
 
output_low(STROBE); // vypni zobrazovani na posuvnem registru
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
output_high(STROBE); // vypni zobrazovani na posuvnem registru
}
}
 
/*
void cikcak()
{
short int movement;
unsigned int8 n,i=0;
 
if(uhel>=STRED)
{
uhel=KOLMO1;
Delay_ms(100);
}
 
if(uhel<=STRED)
{
uhel=KOLMO2;
Delay_ms(100);
}
 
 
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
Delay_ms(5);
if ((sensors & 0b11100000)!=0) movement=DOPRAVA;
 
while(i<=100)
{
while(!bit_test(sensors,3))
{
if(DOPRAVA == movement)
{
FR;BL;
movement=DOLEVA;
n=0;
//if ((sensors & 0b11100000)!=0) line=L1;
//if ((sensors & 0b00001110)!=0) line=R1;
//if ((sensors & 0b00010000)!=0) line=S;
 
for(n=0; n<=100; n++)
{
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
Delay_ms(5); // cekani na SLAVE nez pripravi data od cidel
if(bit_test(sensors,3)) break;
else i=0;
}
STOPL;STOPR;
}
 
if(DOLEVA == movement)
{
FL;BR;
movement=DOPRAVA;
n=0;
 
for(n=0; n<=100; n++)
{
sensors = spi_read(0);
sensors =~ sensors;
Delay_ms(5);
if(bit_test(sensors,3)) break;
else i=0;
}
STOPL;STOPR;
}
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
Delay_ms(5);
}
i++;
}
}
*/
////////////////////////////////////////////////////////////////////////////////
void objizdka()
{
BL;FR;
Delay_ms(300);
FL;BR;
Delay_ms(100);
STOPL;STOPR;
uhel=STRED;
FL;FR;
Delay_ms(500); // rovne
 
uhel=STRED+55;
STOPR;FL;
Delay_ms(190); // doprava
 
uhel=STRED;
FR;FL;
Delay_ms(500); // rovne
 
uhel=STRED+55;
FL;STOPR;
Delay_ms(200); // doprava
 
uhel=STRED;
FR;FL;
Delay_ms(150); // rovne
 
While((sensors & 0b11111110)!=0) //dokud neni cara
{
sensors = spi_read(0); // cteni senzoru
sensors=~sensors;
Delay_ms(4); // cekani na SLAVE nez pripravi data od cidel
}
BL;BR;
Delay_ms(400);
uhel=STRED-55;
FR;STOPL; // doleva
delay_ms(250);
line=L3;
cikcak();
}