2013-10-14 5 views
1

Я только что установил leJOS для своего NXT 1.0, и он работал отлично. Я использую Eclipse для написания кода и наложения его на блок. Единственная проблема у меня есть, что блок полностью игнорирует мой код:leJOS игнорирует мои петли

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(); 

Я поставил Button.waitForPress(); там, чтобы я мог проверить, что на самом деле делает программа. Если я запустил его в этой конфигурации, он движется вперед и продолжает движение, пока я не нажму кнопку. Если я раскомментирую команду Thread.sleep(), робот отправляется на количество времени, которое я назначил для ожидания и остановки, полностью игнорируя в обоих случаях, что я хочу, чтобы он следил за нажатием сенсорного датчика. Все примеры программ работают, но я не нашел в них петли, поэтому я думаю, что есть проблема с моим циклом. Есть ли кто-нибудь, кто может помочь? Спасибо уже

ответ

0

я отвечу как комментарий, но я не думаю, что я могу сделать это и сделать его доступным для чтения ..

Я думаю, что touch.isPressed() возвращается правда без датчика фактически нажата. Датчики не слишком надежны и возможно, что они не совсем в исходном состоянии.

Я бы изменить код, чтобы посмотреть, как это сейчас, просто отладить вопрос:

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% уверены, что isPressed возвращается.

+0

Спасибо за помощь в первом месте. Теперь я знаю, что сенсорный сенсор не работает вообще также программа не выходит из-за чего-то, почему это так: я не знаю, но если я прокомментирую кнопку, она снова отключится, ничего не сделав. – Timbo

+0

Я учу свой класс lejos сегодня вечером ... Я сыграю с кодом, если у меня появится шанс. – TofuBeer

-1

Вы должны использовать время цикла, а затем положить if-то еще заявления в том, как - время (истина) { писать код здесь. }

но в приведенном выше случае ваша программа будет работать вечно, не остановится. так что лучше, если вы дадите условие в своем цикле while. если я сомневаюсь, могу снова сказать вам

Смежные вопросы