【问题标题】:LEGO NXT Brick using NBC使用 NBC 的乐高 NXT 积木
【发布时间】:2013-12-15 04:41:53
【问题描述】:

我是 NBC 编程的新手,我正在尝试对我的乐高 NXT 积木进行编程,以搜索并跟踪我在地板上的一排黑色电工胶带(我的前面有光传感器,并直接指向下方)地面)。到现在为止,灯亮了,但机器人只是继续检查磁带而没有确认它。如果它撞到墙上,我也将它设置为停止并转身,这正在工作。唯一不工作的就是当光线越过黑色胶带时确认并跟随黑色胶带。谁能看看我的代码并告诉我哪里出错了?

                                          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

【问题讨论】:

  • 你能删除代码中不必要的声音调用吗(为了简化理解)?此外,LDD 或至少您的机器人的照片将有助于了解您的传感器位置以及您如何驱动您的车轮
  • 用机器人的样子编辑了帖子,并去掉了代码中的声音部分。
  • 如果我需要做更多的事情来让你更容易地帮助我,请告诉我。非常感谢一些帮助!

标签: nxt lego


【解决方案1】:

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

【讨论】:

  • 如果灯亮了,我应该期望它能够识别黑色胶带,还是不一定如此?
  • @Bryan 不一定。微调机器人定义为“黑色”和“非黑色”的内容可能非常棘手。
  • 我进行了一些测试并确认光传感器确实在黑色电工胶带上拾取,这只是我的代码无法正常工作。对我的代码有帮助吗?
【解决方案2】:

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

最简单的(但可能不是最好的)是在车轮“无限”转动时等待灯的读数低于某个值(当它检测到黑暗时)。您可以在底部的详细信息窗格中指定该值。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-03
    • 2020-05-17
    • 2012-05-10
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多