Avanza con una velocità proporzionale alla distanza dell’ostacolo che ha di fronte; se la distanza è grande, massima velocità; se la distanza è piccola, minima velocità; se la distanza è inferiore a 10 cm, si ferma, altrimenti riparte.
import lejos.nxt.Button;
import lejos.nxt.Motor;
import lejos.nxt.SensorPort;
import lejos.nxt.UltrasonicSensor;
import lejos.robotics.navigation.DifferentialPilot;
import lejos.util.Delay;
public class Ostacoli {
public static void main(String[] args) {
DifferentialPilot dp = new DifferentialPilot(5.5f, 11.5f, Motor.A, Motor.C);
UltrasonicSensor us = new UltrasonicSensor(SensorPort.S1);
dp.forward();
do {
int d = us.getDistance();
if (d < 10)
dp.stop();
else {
dp.setTravelSpeed(d);
dp.forward();
}
Delay.msDelay(100);
} while (!Button.ESCAPE.isDown());
}
}