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(); |
} |
|