Java leJOS忽略了我的循环
我刚刚为我的NXT 1.0安装了leJOS,它工作得很好。我正在使用Eclipse编写代码并将其上载到块中。我唯一的问题是块完全忽略了我的代码:Java leJOS忽略了我的循环,java,eclipse,nxt,lego,mindstorms,Java,Eclipse,Nxt,Lego,Mindstorms,我刚刚为我的NXT 1.0安装了leJOS,它工作得很好。我正在使用Eclipse编写代码并将其上载到块中。我唯一的问题是块完全忽略了我的代码: import lejos.nxt.*; public class Drive { public static void main(String[] args) throws Exception { TouchSensor touch = new TouchSensor(SensorPort.S1); SoundSensor soun
import lejos.nxt.*;
public class Drive {
public static void main(String[] args) throws Exception {
TouchSensor touch = new TouchSensor(SensorPort.S1);
SoundSensor sound = new SoundSensor(SensorPort.S3);
Motor.A.setSpeed(1000);
Motor.B.setSpeed(1000);
Motor.A.forward();
Motor.B.forward();
/*try{
Thread.sleep(10000);
} catch (Exception e) {}
*/
if (touch.isPressed()) {
Motor.A.flt();
Motor.B.flt();
LCD.drawString("Done", 3, 4);
NXT.shutDown();
} else {
Motor.A.forward();
Motor.B.forward();
}
Button.waitForPress();
我按下按钮。waitForPress()代码>在那里,这样我就可以检查程序的实际功能。
如果我在这个配置中运行它,它会向前移动并继续运行,直到我按下一个按钮。如果我取消对Thread.sleep()
命令的注释,则机器人会在我指定的等待时间内移动,然后停止,在这两种情况下,完全忽略我希望它监视触摸传感器被按下的时间。所有的示例程序都可以工作,但我没有在其中找到循环,所以我认为我的循环有问题。
有人能帮忙吗??
已经谢谢了我想作为评论回答,但我不认为我能做到这一点并使其可读
我的猜测是,touch.isPressed()
在没有实际按下传感器的情况下返回true。传感器不太可靠,可能不是完全处于初始化状态
我现在将代码更改为这样,只是为了调试问题:
Motor.A.setSpeed(1000);
Motor.B.setSpeed(1000);
Motor.A.forward();
Motor.B.forward();
if(touch.isPressed())
{
LCD.drawString("Pressed", 3, 4);
}
else
{
LCD.drawString("NOT Pressed", 3, 4);
}
Button.waitForAnyPress();
// rest of your code
这样,您就可以100%确定所显示的内容将返回。您应该使用while循环,然后将if-else语句放入其中,如-
while(true)
{
在这里写代码。
}
但在上述情况下,您的程序将永远运行,不会停止。因此,最好在while循环中给出一个条件。如果有任何疑问,我可以再次告诉你首先感谢你的帮助。现在我知道触摸传感器似乎根本不工作,程序也不会立即退出,原因是:我不知道,但如果我注释掉按钮,它会再次关闭,而什么也不做。我今晚教我的lejos课。。。如果有机会,我会玩代码的。