Ha jól értelmezem, akkor a MotorOverload() akkor ad 1-es értéket vissza, ha több erőre van szüksége a forgáshoz, mint amennyit kap. Ez alapján akarjuk megállitani a motrokat és visszaforditani a robotot.
Az idevágó szál:
task stopback(){A robot mozgási iránya mindig be van állitva, igy tudjuk merre kell visszaforduljon.
while(true){
if((MotorOverload(OUT_B) == 1) || (MotorOverload(OUT_C) == 1)){
Off(OUT_BC);
ClearScreen();
GraphicOut(30,10,"faceclosed.ric");
if(curdir == 1){
Acquire(motor);
curdir = 2;
OnRevReg(OUT_BC, 30, OUT_REGMODE_SPEED);
Wait(500);
forog();
Release(motor);
}
else{
Acquire(motor);
curdir = 1;
OnFwdReg(OUT_BC, 30, OUT_REGMODE_SPEED);
Wait(500);
Release(motor);
}
ClearScreen();
GraphicOut(30,10,"faceopen.ric");
}
}
}
Nincsenek megjegyzések:
Megjegyzés küldése