0,0 → 1,155 |
#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_1 |
#define RED SENSOR_2 |
#define BBUMPER SENSOR_3 |
#define START_ALL start blue_bumper; start cara_cervena; start cara_modra; |
|
int semafor; |
|
task main() |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
Wait(500); // 5s podle pravidel |
SetSensor(BLUE,SENSOR_LIGHT); // senzor na caru modry |
SetSensor(RED,SENSOR_LIGHT); // senzor na caru cerveny |
SetSensor(BBUMPER, SENSOR_TOUCH); // naraznik modry |
SetSensorMode (BBUMPER, SENSOR_MODE_BOOL); // koncak bude ... |
SetPower (MLEFT,OUT_FULL); |
SetPower (MRIGHT,OUT_FULL); |
SetDirection(MLEFT, OUT_FWD); |
SetDirection(MRIGHT, OUT_FWD); |
|
OnFwd (MLEFT); // cuknuti na shozeni radlic |
OnFwd (MRIGHT); |
Wait(50); |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(100); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
|
start red_bumper; |
start blue_bumper; |
start cara_cervena; |
start cara_modra; |
start stochastika; |
} |
|
task stochastika() |
{ |
while(true) Zatoc(); |
} |
|
|
void GoBlue() |
{ |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
|
void GoRed() |
{ |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(300); // popojed kus |
Off(MLEFT); |
Off(MRIGHT); |
} |
|
void Zatoc() |
{ |
switch (Random(3)) |
{ |
case 0: |
OnRev (MLEFT); |
OnFwd (MRIGHT); |
Wait(20); |
break; |
case 1: |
OnFwd (MLEFT); |
OnRev (MRIGHT); |
Wait(20); |
break; |
case 2: |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(70); |
break; |
case 3: |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(70); |
break; |
} |
} |
|
task red_bumper() |
{ |
while(true) |
{ |
if (100 == RED) // utoc, kdyz neco narazi do narazniku |
{ |
PlaySound (SOUND_FAST_UP); |
stop stochastika; |
OnRev (MLEFT); |
OnRev (MRIGHT); |
Wait(50); |
} |
} |
} |
|
task blue_bumper() |
{ |
while(true) |
{ |
if (1 == BBUMPER) // utoc, kdyz neco narazi do narazniku |
{ |
PlaySound (SOUND_FAST_UP); |
stop stochastika; |
OnFwd (MLEFT); |
OnFwd (MRIGHT); |
Wait(50); |
} |
} |
} |
|
task cara_cervena() // hlidani natlaceni na caru |
{ |
while(true) |
{ |
if ((RED > THRESHOLD) && (RED < RED_WHITE)) |
{ |
Wait(2); |
if ((RED > THRESHOLD) && (RED < RED_WHITE)) |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
stop red_bumper; |
GoBlue(); |
start red_bumper; |
start stochastika; |
} |
} |
} |
} |
|
task cara_modra() // hlidani cary |
{ |
while(true) |
{ |
if (BLUE < THRESHOLD) // cekej na caru |
{ |
PlaySound (SOUND_DOUBLE_BEEP); |
stop blue_bumper; |
GoRed(); |
start blue_bumper; |
start stochastika; |
} |
} |
} |
|