0,0 → 1,98 |
#define THRESHOLD 44 |
#define POJEZD OUT_B |
#define VYHAZ OUT_C |
|
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(500); // 5s podle pravidel |
SetSensor(SENSOR_1,SENSOR_LIGHT); // senzor na caru modry |
SetSensor(SENSOR_2,SENSOR_LIGHT); // senzor na caru cerveny |
SetSensor(SENSOR_3, SENSOR_TOUCH); // poloha vyhazovadla |
SetSensorMode (SENSOR_3, SENSOR_MODE_PULSE); // koncak bude pocitat pulzy |
while (true) |
{ |
// kazdych 10s dojed k care a zpet do vyckavaci pozice |
PlaySound (SOUND_CLICK); |
start k_care; |
Wait(1000); // 10s |
stop k_care; |
stop radar; |
stop cara; |
} |
} |
|
// udrazeni soupere, pokud drcnul do radaru nebo nas natlacil na caru |
task utok() |
{ |
stop radar; |
stop cara; |
PlaySound (SOUND_FAST_UP); |
|
SetPower (POJEZD+VYHAZ,OUT_FULL); // plnou parou vpred |
OnFwd(POJEZD); |
OnRev(VYHAZ); |
ClearSensor (SENSOR_3); |
// tlac, dokud se radar 2x neotoci nebo je jeste videt cara |
while ( (2 > SENSOR_3) || (SENSOR_2 > THRESHOLD) ); |
Off(VYHAZ); |
Off(POJEZD); |
|
start k_care; // po odrazeni soupere se vrat do vyckavaci pozice |
stop utok; |
} |
|
task k_care() // najed do vyckavaci pozice |
{ |
SetPower (POJEZD,OUT_FULL); |
OnRev (POJEZD); // dojezd k care |
while (SENSOR_2 < THRESHOLD); |
OnFwd (POJEZD); |
SetPower (POJEZD,OUT_FULL); |
OnFor (POJEZD, 30); // popojed kus od cary |
|
PlaySound (SOUND_DOUBLE_BEEP); |
start radar; |
start cara; |
start cara2; |
stop k_care; |
} |
|
task cara() // hlidani natlaceni na caru |
{ |
while (SENSOR_2 < THRESHOLD); // utoc, kdyz nas neco dotlaci k care |
start utok; |
} |
|
task radar() // hlidani najeti do prostoru vyhazovace |
{ |
OnFwd(VYHAZ); // roztoceni radaru |
SetPower (VYHAZ,OUT_FULL); |
OnFor(VYHAZ,50); |
SetPower (VYHAZ,OUT_LOW); // snizeni vykonu po roztoceni |
while (true) |
{ |
ClearSensor (SENSOR_3); |
OnFwd(VYHAZ); // stouchni do radaru na 400ms |
Wait(40); |
Float(VYHAZ); // volnobeh |
ClearTimer (0); |
while (0 == SENSOR_3) // testuje se, zda se do 700ms radar otoci |
{ |
if (Timer (0) > 7) start utok; // utoc, pokud je zablokovan radar |
} |
} |
} |
|
task cara2() // hlidani cary ze strany "radaru" |
{ |
while (SENSOR_1 > THRESHOLD); // cekej na caru |
stop radar; // vsechno zastav |
stop cara; |
stop k_care; |
stop utok; |
Off(POJEZD); |
Off(VYHAZ); |
start k_care; // snaz se dojet k care na druhe strane |
stop cara2; |
} |