LEGO NXT Brick使用NBC

时间:2013-12-15 04:41:53

标签: nxt lego

我是NBC编程的新手,我正在尝试编写我的Lego NXT Brick来搜索和跟踪我在地板上的黑色电子胶带线(我在前面有光传感器,直指向下地面)。截至目前,灯亮了,但机器人只是继续越过磁带而没有承认它。如果碰到墙壁,我也会把它设置为停下来转身。唯一不起作用的是当光线照过它时,确认并跟随黑带。任何人都可以看看我的代码并告诉我哪里出错了?

                                          dseg segment
  Switch sword 0
  Volume sword 0
  Level sword 0
  Distance sword 0
dseg ends

thread main
  SetSensorTouch(IN_1)    // touch sensor connected to IN_1
  SetSensorSound(IN_2)    // sound sensor connected to IN_2
  SetSensorLight(IN_3)    // Light Sensor connected to input 3
  SetSensorUltrasonic(IN_4) // Ultrasonic Sensor connected to input 4
  OnFwd(OUT_BC,80)     // move forward

CheckSensor:

  ReadSensor(IN_1,Switch)       // reads current value of sensor (0/1)
  brtst EQ, CheckSensor, Switch // branch to CheckSensor if Switch = 0
                              // i.e., exit the loop when Switch = 1


  OnRev(OUT_BC,40)      // move backward
  wait 500
  OnFwd(OUT_B,20)       // turn
  wait 500

  jmp CheckSound

CheckSound:
  ReadSensor(IN_2, Volume)
  brcmp GT, ExitCheck, Volume, 60

  jmp CheckSound

 ExitCheck:

 OnFwd(OUT_BC,60)

  jmp CheckLight

  CheckLight:
  ReadSensor(IN_3,Level)
  brcmp LT, CheckLight, Level, 60

  ReadSensorUS(IN_4,Distance)
  brcmp LT, EndPoint, Distance, 30

  OnFwd(OUT_C, 10)

  FindPath:
  ReadSensor(IN_3,Level)
  brcmp GTEQ, FindPath, Level, 60

  OnFwd(OUT_BC, 60)

  jmp CheckLight

  EndPoint:

  Off(OUT_BC)

  wait 1500



endt

enter image description here

2 个答案:

答案 0 :(得分:3)

如果这与我使用的NXT相同,那么你很快就会到达。这个套件中的光传感器是垃圾,你必须摆弄它认为“开”的东西,直到它真正捡起来。我希望我有一个更好的答案,但我已经使用了这些东西4年,从来没有按照我想要的方式工作。我使用了套件附带的可视化软件,它可以选择设置它需要多少,尝试寻找类似的东西。

答案 1 :(得分:0)

如果您使用的是NXT-G,有很多方法可以让您的代码对暗带做出反应。

最简单的(但也许不是你所做的最好的)是等待光线等待光线的读数低于某个值(当它检测到黑暗时)正在转变"无限制"。您可以在底部的详细信息窗格中指定该值。

或者,您可以使用黄色传感器块从光传感器获取读数,并使用黄色数据线将该数字放入比较块。然后,比较块将使用它的真/假输出数据线检查您的亮度是否足够暗。

使用电工胶带的提示:它有光泽!因此,可以通过取消选中框来关闭红灯,否则,它只会反射光线而机器人不会看到它。