【发布时间】:2015-12-19 12:13:33
【问题描述】:
我正在尝试制作一个连接了超声波传感器的 NXT 机器人。它必须一直行驶到距离为 15,然后发动机必须停止。停止后它必须转动,但它不起作用。
import lejos.nxt.*;
public class test {
public static void main(String [] args) throws InterruptedException {
UltrasonicSensor ultra = new UltrasonicSensor(SensorPort.S1);
for (int i = 0; i < 5; i++) {
try {
Motor.B.rotate(-1500 , true);
Motor.C.rotate(-1500 , true);
} catch (Exception E){}
while ( ultra.getDistance() < 15 ) {
Motor.B.backward();
Motor.C.backward();
}
LCD.clear();
LCD.drawString("Distance : "+ultra.getDistance(), 0, 0);
}
Button.waitForAnyPress();
}
}
我的旧代码也不起作用:
import lejos.nxt.*;
public class test {
public static void main(String [] args) throws InterruptedException {
UltrasonicSensor ultra = new UltrasonicSensor(SensorPort.S1);
try {
Motor.B.rotate(-720);
Motor.C.rotate(-720);
} catch (Exception E){}
for (int i = 0; i < 5; i++)
{
LCD.drawString("Distance : "+ultra.getDistance(), 0, i);
Thread.sleep(2000);
int maxDistance = ultra.getDistance();
if (maxDistance < 15){
Motor.B.stop();
Motor.C.stop();
}
}
Button.waitForAnyPress();
}
}
【问题讨论】:
-
“它不起作用”是什么意思?是否产生了异常或错误,或者机器人做了什么意想不到的事情?
-
对不起,这真是一个奇怪的描述。问题是它确实检测到墙壁,但如果达到限制 15,它不会停止驱动。就像这样:如果传感器 ping
-
我在这里没有看到任何与 15 相关的内容。我所看到的只是一些会备份到距离 >= 30 的东西。
-
对不起,我把 1500 弄糊涂了,我的意思是 30。
-
自从我使用 LeJOS 已经有一段时间了,所以我可能错了,但是 Motor.x.backward() 不会一直继续下去,直到你明确告诉它停止?
标签: java eclipse nxt lejos-nxj