Rev 1 | Blame | Last modification | View Log | Download
#define THRESHOLD 44 // rozhodovaci uroven mezi cernou a bilou#define FTHRESHOLD 150 // Rozhodovaci uroven dalkoveho sensoru#define RED_WHITE 60 // maximum bile na cervenem senzoru#define MLEFT OUT_C#define MRIGHT OUT_A#define RSENSOR SENSOR_1#define LSENSOR SENSOR_3#define BUMPER SENSOR_2#define L 0#define R 1#define S 2int line;task main(){PlaySound (SOUND_DOUBLE_BEEP);Wait(100); // 1sSetSensor(RSENSOR,SENSOR_LIGHT); // senzor na caru modry pravySetSensor(LSENSOR,SENSOR_LIGHT); // senzor na caru modry levySetSensor(BUMPER,_SENSOR_CFG(SENSOR_TYPE_LIGHT, SENSOR_MODE_RAW)); // senzor na prekazkuSetTxPower(TX_POWER_HI); // aby daleko videl// start cihla;// start cara;SetPower (MLEFT,OUT_HALF);SetPower (MRIGHT,OUT_HALF);OnRev(MLEFT); // rozjed se vpredOnFwd(MRIGHT);line=S;while(true){if (THRESHOLD < RSENSOR){line=R;SetPower (MRIGHT,OUT_LOW);OnRev(MLEFT);};if (THRESHOLD < LSENSOR){line=L;SetPower (MLEFT,OUT_LOW);OnFwd(MRIGHT);};if ((THRESHOLD > LSENSOR)&&(THRESHOLD > RSENSOR)){if(L==line){Off(MLEFT);OnFwd(MRIGHT);while(THRESHOLD > LSENSOR);while(THRESHOLD < LSENSOR);};if(R==line){Off(MRIGHT);OnRev(MLEFT);while(THRESHOLD > RSENSOR);while(THRESHOLD < RSENSOR);};line=S;SetPower (MLEFT,OUT_HALF);SetPower (MRIGHT,OUT_HALF);OnRev(MLEFT); // rozjed se vpredOnFwd(MRIGHT);}}}task cara(){while(true){OnRev(MLEFT); // rozjed se vpredOnFwd(MRIGHT);if (THRESHOLD < RSENSOR){OnRev(MRIGHT);Wait(1);Off(MRIGHT);};if (THRESHOLD < LSENSOR){OnFwd(MLEFT);Wait(1);Off(MLEFT);};while((THRESHOLD < RSENSOR)||(THRESHOLD < LSENSOR));}}task cihla() // dalkovy sensor{int lastlevel;lastlevel = 0;while(true){SendMessage(0);if(lastlevel > BUMPER){PlaySound(SOUND_FAST_UP);stop cara;Off(MLEFT);Off(MRIGHT);Wait(100);start cara;}lastlevel = BUMPER;lastlevel -= FTHRESHOLD;}}