Rev 1 | Blame | Last modification | View Log | Download
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou#define RED_WHITE 60 // maximum bile na cervenem senzoru#define MLEFT OUT_A#define MRIGHT OUT_C#define BLUE SENSOR_3#define RED SENSOR_2#define BBUMPER SENSOR_1#define START_ALL start blue_bumper; start cara_cervena; start cara_modra;int semafor;task main(){PlaySound (SOUND_DOUBLE_BEEP);Wait(500); // 5s podle pravidelSetSensor(BLUE,SENSOR_LIGHT); // senzor na caru modrySetSensor(RED,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); // senzor na caru cervenySetSensor(BBUMPER, SENSOR_TOUCH); // naraznik modrySetSensorMode (BBUMPER, SENSOR_MODE_BOOL); // koncak bude ...SetPower (MLEFT,OUT_FULL);SetPower (MRIGHT,OUT_FULL);SetDirection(MLEFT, OUT_FWD);SetDirection(MRIGHT, OUT_FWD);SetTxPower(TX_POWER_HI); // aby daleko videlOnFwd (MLEFT); // cuknuti na shozeni radlicOnFwd (MRIGHT);Wait(20);OnRev (MLEFT);OnRev (MRIGHT);Wait(70); // popojed kusOff(MLEFT);Off(MRIGHT);start blue_bumper;start cervena;start cara_modra;start stochastika;}task stochastika(){while(true) Zatoc();}void GoBlue(){OnFwd (MLEFT);OnFwd (MRIGHT);Wait(300); // popojed kusOff(MLEFT);Off(MRIGHT);}void GoRed(){OnRev (MLEFT);OnRev (MRIGHT);Wait(300); // popojed kusOff(MLEFT);Off(MRIGHT);}void Obrat(){OnRev (MLEFT);OnFwd (MRIGHT);Wait(125); // popojed kusOff(MLEFT);Off(MRIGHT);}void Zatoc(){switch (Random(1)){case 0:OnRev (MLEFT);OnFwd (MRIGHT);Wait(50);break;case 1:OnFwd (MLEFT);OnRev (MRIGHT);Wait(50);break;case 2:OnRev (MLEFT);OnRev (MRIGHT);Wait(70);break;case 3:OnFwd (MLEFT);OnFwd (MRIGHT);Wait(70);break;}}task blue_bumper() // naraznik na modre strane{while(true){if (1 == BBUMPER) // utoc, kdyz neco narazi do narazniku{stop stochastika;PlaySound (SOUND_FAST_UP);OnFwd (MLEFT);OnFwd (MRIGHT);Wait(50);}}}task cervena() // dalkovy sensor{int lastlevel;lastlevel = 0;while(true){SendMessage(0);if(lastlevel > SENSOR_2){// Close to somethingPlaySound(SOUND_FAST_UP);stop stochastika;OnRev (MLEFT);OnRev (MRIGHT);Wait(10); // popojed kusOff(MLEFT);Off(MRIGHT);Obrat();Wait(50);start stochastika;}lastlevel = SENSOR_2;lastlevel -= THRESHOLD;}}task cara_modra() // hlidani cary{while(true){if (BLUE < THRESHOLD) // cekej na caru{PlaySound (SOUND_DOUBLE_BEEP);stop blue_bumper;stop stochastika;GoRed();start blue_bumper;start stochastika;}}}