Ülesanne 3 (Exploreri sarjast)
Ehita BOT, millel on peal mootoriga Ultrasonic andur.
Kirjuta programm, mille käigus robot sõidab otse kuni näeb ees seina 20 cm kaugusel. Seina nägemisel robot peatub, vaatab Ultrasonic anduriga paremale / vasakule ning see kummal pool on rohkem ruumi (ehk US andur näeb kaugemale), sinna sõidab.
Lahendus
Ultrasonic anduriga paremalt-vasakult kaugust mõõtes peab selle salvestama muutujatesse ning siis neid omavahel võrdlema. Selle põhjal otsustab robot kuhu keerata.
task main(){
SetSensorLowspeed(S1);
int Kaugus;
int ParemPool;
int VasakPool;
Kaugus = 20;
while(TRUE){
if(SensorUS(S1) < Kaugus){
Off(OUT_BC);
RotateMotor(OUT_A, 25, 90);
ParemPool = SensorUS(S1); //mõõdab paremal kaugust
RotateMotor(OUT_A, 25, -180);
VasakPool = SensorUS(S1); //mõõdab vasakult poolt kaugust
RotateMotor(OUT_A, 25, 90);
if(ParemPool > VasakPool){
RotateMotorEx(OUT_BC, 50, 217, 100, TRUE, TRUE); //keerab paremale
}
else{
RotateMotorEx(OUT_BC, 50, 217, -100, TRUE, TRUE); //keerab vasakule
}
}
else{
OnFwdSync(OUT_BC, 100, 0);
}
}
}