Rev 1 | Blame | Last modification | View Log | Download
#define THRESHOLD 44#define POJEZD OUT_B#define VYHAZ OUT_Ctask main(){PlaySound (SOUND_DOUBLE_BEEP);Wait(500); // 5s podle pravidelSetSensor(SENSOR_1,SENSOR_LIGHT); // senzor na caru modrySetSensor(SENSOR_2,SENSOR_LIGHT); // senzor na caru cervenySetSensor(SENSOR_3, SENSOR_TOUCH); // poloha vyhazovadlaSetSensorMode (SENSOR_3, SENSOR_MODE_PULSE); // koncak bude pocitat pulzywhile (true){// kazdych 10s dojed k care a zpet do vyckavaci pozicePlaySound (SOUND_CLICK);start k_care;Wait(1000); // 10sstop k_care;stop radar;stop cara;}}// udrazeni soupere, pokud drcnul do radaru nebo nas natlacil na carutask utok(){stop radar;stop cara;PlaySound (SOUND_FAST_UP);SetPower (POJEZD+VYHAZ,OUT_FULL); // plnou parou vpredOnFwd(POJEZD);OnRev(VYHAZ);ClearSensor (SENSOR_3);// tlac, dokud se radar 2x neotoci nebo je jeste videt carawhile ( (2 > SENSOR_3) || (SENSOR_2 > THRESHOLD) );Off(VYHAZ);Off(POJEZD);start k_care; // po odrazeni soupere se vrat do vyckavaci pozicestop utok;}task k_care() // najed do vyckavaci pozice{SetPower (POJEZD,OUT_FULL);OnRev (POJEZD); // dojezd k carewhile (SENSOR_2 < THRESHOLD);OnFwd (POJEZD);SetPower (POJEZD,OUT_FULL);OnFor (POJEZD, 30); // popojed kus od caryPlaySound (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 carestart utok;}task radar() // hlidani najeti do prostoru vyhazovace{OnFwd(VYHAZ); // roztoceni radaruSetPower (VYHAZ,OUT_FULL);OnFor(VYHAZ,50);SetPower (VYHAZ,OUT_LOW); // snizeni vykonu po roztoceniwhile (true){ClearSensor (SENSOR_3);OnFwd(VYHAZ); // stouchni do radaru na 400msWait(40);Float(VYHAZ); // volnobehClearTimer (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 carustop radar; // vsechno zastavstop cara;stop k_care;stop utok;Off(POJEZD);Off(VYHAZ);start k_care; // snaz se dojet k care na druhe stranestop cara2;}