【发布时间】: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毫秒延迟后向逆时针移动。
我的代码有什么问题?
如何在此间隔后停止电机,电机应在此间隔后向其他方向移动以寻找线,然后它肯定会找到一条线
谢谢!
【问题讨论】: