我正在尝试使用编程语言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
答案 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()
:
ClearScreen()
答案 2 :(得分:0)
正在阅读显示屏上的数字吗?这些是传感器读取的值吗?
例如,
Value of Distance Display
255 255
80 805
您看到805
因为,您在显示屏上打印80
,而5
中的最后255
仍然在那里。
NumOut()
不会删除显示内容。我想应该有一个擦除显示的选项。