【问题标题】:Motor conrolling through C电机通过 C 控制
【发布时间】:2013-11-05 01:08:00
【问题描述】:

我正在开发一个 NXT 乐高头脑风暴机器人,我正在构建带有单个反射光传感器的线路跟随机器人,并且我正在使用 C 语言进行编程。

传感器将原始模拟值转换为范围从 0 到 1023 的数字值。

我必须将线编码为黑色,然后电机将向前移动,如果没有线(白色底座)然后停止,如果有灰色(在白色和黑色线之间)然后稍微向右移动然后以不同的方式离开以找到丢失的黑线。

所以代码是这样的

While (1)
{
a=ecrobot_get_light_sensor(port_led); //storing the A/D converted value in variable

while (a<300)   // White area
{
ecrobot_status_monitor("White Area");
nxt_motor_set_speed(port_motor_l, 0, 1); // left motor turns off
nxt_motor_set_speed(port_motor_r, 0, 1); // right motor turns off
}
while (a>=600) // Black Line
{
ecrobot_status_monitor("Black Area");
nxt_motor_set_speed(port_motor_l, 100, 1); // left motor turns on
nxt_motor_set_speed(port_motor_r, 100, 1); // right motor turns on
}

while (a>=300 || a<600) // Robot loosing the black line
{
ecrobot_status_monitor("grey Area");
nxt_motor_set_speed(port_motor_l, 50, 1); // left motor move forward
nxt_motor_set_speed(port_motor_r, -50, 1); // right motor move backward

delay_ms(200)
nxt_motor_set_speed(port_motor_l, -50, 1); // left motor move backward
nxt_motor_set_speed(port_motor_r, 50, 1); // right motor move forward
delay_ms(200)

}

问题是如果机器人丢线然后开始顺时针移动而不停止并在200毫秒延迟后向逆时针移动。

我的代码有什么问题?

如何在此间隔后停止电机,电机应在此间隔后向其他方向移动以寻找线,然后它肯定会找到一条线

谢谢!

【问题讨论】:

    标签: c nxt


    【解决方案1】:

    一种解决方案是将 while(1) 循环中的所有 while 语句更改为 if 语句。

    例如,在您的最后一个 while 语句中,当机器人松开黑线时,您的机器人将顺时针旋转,然后在每个方向上逆时针旋转 200 毫秒无论读取的新值是多少你的传感器。这是因为最后一个 while 语句将在您的 a 更新之前首先完成其执行。

    【讨论】:

      【解决方案2】:

      我看到了一些东西,

      • 缺少一些分号。我确定您的真实代码中并非如此,因为它甚至无法编译。也试着在你的陈述中加上适当的括号(更好的做法:-)

      • 您还需要在循环中重新读取传感器以避免死锁!!!

      • 如前所述,在大的 while 循环中使用 if/else if 语句。

      • 您可以添加一些阈值以使其更平滑:-)

      祝你好运

      【讨论】:

      • 感谢你们,我将 while 循环更改为 if 条件,现在的问题是,如果传感器在黑线上,那么有时它会检测到它,否则它只会顺时针旋转 200 毫秒,逆时针旋转 200 毫秒,有什么方法可以在移动过程中连续感应线,如果找到黑线然后继续移动?谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-27
      • 1970-01-01
      • 2021-07-06
      • 1970-01-01
      相关资源
      最近更新 更多