Это, вероятно, то, что вы ищете:
isStalled ()
NXTRegulatedMotor.isStalled()
- Вернуть true, если двигатель в данный момент остановлен. (то есть счетчик движений показывает меньше градусов поворота, чем ожидалось)
http://www.lejos.org/nxt/nxj/api/lejos/nxt/NXTRegulatedMotor.html#isStalled()
Еще один метод, о котором вам следует знать:
setStalledThreshold ()
NXTRegulatedMotor.setStallThreshold()
- Установите параметры для обнаружения остановленного двигателя. Двигатель будет распознаваться как остановленный, если ошибка движения (величина, на которую двигатель отстает от регулируемого положения) больше ошибки на период, превышающий время.
http://www.lejos.org/nxt/nxj/api/lejos/nxt/NXTRegulatedMotor.html#setStallThreshold(int, int)
И, наконец, вот пример того, как все это собрать:
public static void main(String[] args)
{
boolean stalled = false;
NXTRegulatedMotor motor_arm = Motor.A;
motor_arm.setStallThreshold(1, 100);
motor_arm.setSpeed(400);
motor_arm.backward();
while (! stalled)
{
LCD.drawString("Motor is rotating", 0, 0);
if(motor_arm.isStalled())
{
motor_arm.stop();
stalled=true;
LCD.drawString("Motor is stalled", 0, 0);
Delay.msDelay(3000);
}
Delay.msDelay(100);
}
}
Примечание: Значения для setStalledThreshold()
могут быть механически зависимыми , если вы используете шестерни для подключения двигателя к механизму остановки, значения для правильного обнаружения остановки могут варьируется в зависимости от дизайна вашего робота.
Удачи! :)