1

我正在尝试使用编程语言 NBC(下一个字节码)读取乐高 NXT 机器人的超声波传感器读数。它在乐高网站上说传感器读数范围为 0 -255 厘米,但是当我输出传感器数据时,有时会得到高于 255 的值;这通常发生在我的传感器读取值 255 时;然后它读取大约 170 - 900 我不知道它为什么这样做。这是我的代码:(我首先读取传感器数据,然后让机器人旋转 45 度并无限期地重复,以检查数据是如何被读取的。)

#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
4

3 回答 3

1

正如@Charbonier 所说,您没有清除显示。这样,只有部分数字会被覆盖,从而产生传感器已经发疯的错觉。

尝试使用而不是NumOut()DRAW_OPT_CLEAR_SCREEN是一个定义为的常量1):

NumOutEx(0, 10, Distance, DRAW_OPT_CLEAR_SCREEN)

或者,您可以在 之前放置以下代码行NumOut()

ClearScreen()
于 2012-04-28T01:29:24.203 回答
1

好吧,一张表格可能会更清晰并保持不变:

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

您会看到前 255 个中的 5 个!

于 2012-04-27T14:47:54.237 回答
0

正在读取显示屏上的数字吗?这些是传感器读取的值吗?

例如,

Value of Distance    Display
    255                255
    80                 805

您会看到,因为您在显示屏上805打印,而最后一个from仍然存在。805255

显示不会被 删除NumOut()。我想应该有一个擦除显示的选项。

于 2012-04-27T14:26:36.287 回答