我正在NXT lego智力风暴机器人上工作,并且我正在用单反射光传感器构建线性跟随器机器人,并使用C语言编程。电机通过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毫秒延迟的逆时针移动顺时针移动。
我的代码有什么问题?
我怎样才能停止电机此区间和电机后,搜索线的这种间隔后在其他方向应移动,然后它一定会找到一个线
谢谢!
多亏了你们俩,我改变了,而循环到如果条件下,现在的问题是,如果传感器在黑线上,有时它会检测到它,否则它只是顺时针旋转200毫秒,逆时针旋转200毫秒,有没有什么办法可以在移动过程中连续检测线条,并且如果发现黑线则移动呢? 谢谢 – user2828488