2014-02-23 57 views
1

iam初學者在編程和嘗試使清潔機器人NXT 我附上(超聲波傳感器),和(聲音傳感器) 機器人的工作是,當我拍手它必須開始向前移動和當UltraSonic傳感器在途中看到東西時,它必須轉身並繼續前進。 問題是,當它變成它不會繼續前進,直到我再次拍手!!!!!LeJOS 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); 
} 

任何一個可以幫助解決這個問題,請?????

thnx任何方式。

回答

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

或類似的東西。 )

+0

非常感謝你;否則,當有另一個聲音

我也只想說,我很嫉妒只會動) – user3342208

+0

,但我想問問你什麼是 move =!move; ????? – user3342208

+0

基本上,它是move = not move,當應用於一個布爾值時,它將它從true變爲false並且再次返回 – MadProgrammer