2012-04-26 132 views
1

我正嘗試使用編程語言NBC(Next Byte Code)讀取樂高NXT機器人的超聲波傳感器讀數。它在樂高網站上表示,傳感器讀數範圍從0到255釐米,但是當我輸出傳感器數據時,有時我會得到高於255的值;這通常發生在我的傳感器讀取值爲255時;之後它讀取大約170 - 900我不知道它爲什麼這樣做。這裏是我的代碼:(我第一次在傳感器數據讀取然後讓機器人轉45度,無限重複只是爲了研究如何在數據被讀取。)樂高NXT超聲波傳感器的輸出值

#include "NXTDefs.h" 
// have the robot stay still and keep track of all the distances when turning around. 

dseg segment 
    Distance udword 0 
dseg ends 

thread main 
    SetSensorUltrasonic(IN_4) 
    Forever: 
     ReadSensorUS(IN_4,Distance) 
     NumOut(0,10,Distance) 
     wait 1000 
     RotateMotor(OUT_B,100,180) 
     ClearSensor(IN_4) 
     ResetSensor(IN_4) 
     set Distance,0 
     jmp Forever 
     exit 
endt 

回答

0

從顯示讀取的數字?傳感器讀取的值是否是這些值?

例如,

Value of Distance Display 
    255    255 
    80     805 

你看805,因爲,你的顯示器和255住宿的最後5仍有上打印80

顯示不被NumOut()刪除。我想應該有一個選項可以清除顯示。

1

好表使得它也許更清晰,並保持:

Value of "Distance" Display 
_  255    255 
_  80    805 

您從以前的255見5!

1

正如@Charbonier所說,你並沒有清理顯示屏。通過這種方式,只有一些數字被寫下來,造成你的傳感器瘋狂的錯覺。

使用this,而不是NumOut()DRAW_OPT_CLEAR_SCREEN是定義爲1常數)嘗試:

NumOutEx(0, 10, Distance, DRAW_OPT_CLEAR_SCREEN) 

或者,你可以將the following行代碼你NumOut()前:

ClearScreen() 
相關問題