我正在开发一个 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 毫秒延迟后开始顺时针移动而不停止并朝逆时针方向移动。
我的代码有什么问题?
我怎样才能在这个间隔之后停止电机,并且电机应该在这个间隔之后向其他方向移动以寻找线,然后它肯定会找到一条线
谢谢!