用于Lego NXT的超声波传感器的输出值

时间:2012-04-26 18:18:47

标签: nxt lego mindstorms

我正在尝试使用编程语言NBC(下一字节代码)从Lego NXT机器人读取超声波传感器读数。它在乐高网站上说,传感器读数的范围是0到255厘米,但是当我输出传感器数据时,我有时会得到高于255的值;当我的Sensor读取值为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

3 个答案:

答案 0 :(得分:1)

好吧,桌子可能更清晰并且保持不变:

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

你看到前255个中的5个!

答案 1 :(得分:1)

正如@Charbonier所说,你没有清理显示器。通过这种方式,只有部分数字被写入,造成了传感器疯狂的错觉。

尝试使用this代替NumOut()DRAW_OPT_CLEAR_SCREEN是一个定义为1的常量):

NumOutEx(0, 10, Distance, DRAW_OPT_CLEAR_SCREEN)

或者,您可以在NumOut()

之前添加the following代码行
ClearScreen()

答案 2 :(得分:0)

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

例如,

Value of Distance    Display
    255                255
    80                 805

您看到805因为,您在显示屏上打印80,而5中的最后255仍然在那里。

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