Программирование LeJOS NXT

Я новичок в программировании и пытаюсь сделать робота-уборщика NXT, к которому я прикрепил (ультразвуковой датчик) и (звуковой датчик), работа робота заключается в том, что, когда я хлопаю, он должен начать двигаться вперед, и когда ультразвуковой датчик видит что-то на путь он должен развернуться и продолжать идти вперед. Проблема в том, что когда он поворачивается, он не продолжает двигаться вперед, пока я снова не хлопну !!!!!

и это код, который я написал:

public static void main(String[] args) {
  // TODO Auto-generated method stub

  TouchSensor touch = new TouchSensor(SensorPort.S2);

  SoundSensor sound = new SoundSensor( SensorPort.S4 );

  UltrasonicSensor sonic = new UltrasonicSensor( SensorPort.S3);

  Motor.A.setSpeed( 400 );
  Motor.C.setSpeed( 400 );
  Button.waitForAnyPress();

  int SoundValue;
  SoundValue = sound.readValue();
  System.out.print(SoundValue);

  do {
    if ( sound.readValue() > 50 ) {
      // PROBLEM:       
      while ( sonic.getDistance() > 30 ){
        Motor.B.backward();
        Motor.A.backward();
        Motor.C.backward();
      }
      {
        Motor.A.rotate( -185, true );
        Motor.C.rotate( 185, true );    
      }  
    };
  }

  while( Button.readButtons() != Button.ID_ESCAPE );
}

Может ли кто-нибудь помочь решить эту проблему, пожалуйста?????

Спасибо В любом случае.


person user3342208    schedule 23.02.2014    source источник


Ответы (1)


Думаю, петля немного неверна...

По сути, я думаю, вам нужен флаг, чтобы указать, что бот должен двигаться, чтобы, когда вы хлопаете, он переворачивал флаг...

boolean move = false;
do {
    if ( sound.readValue() > 50 ) {
        move = !move;
    }

    while ( sonic.getDistance() > 30 ){
        Motor.B.backward();
        Motor.A.backward();
        Motor.C.backward();
    }
    if (move) {
        Motor.A.rotate( -185, true );
        Motor.C.rotate( 185, true );   
    }
} while( Button.readButtons() != Button.ID_ESCAPE );

Или что-то подобное. В противном случае он будет двигаться только при наличии другого звука.

Я также просто хотел бы сказать, что я очень завидую ;)

person MadProgrammer    schedule 23.02.2014
comment
По сути, это движение = не движение, когда оно применяется к логическому значению, оно переворачивает его с истинного на ложное и обратно. - person MadProgrammer; 23.02.2014