0
我有编码器反馈的机器人,以及i希望使用移动机器人一定距离的功能,并把它在一定的角度,因此,例如:如何将机器人移动一定距离并仍然管理传感器?
void loop(){
if (Obstacle==false){ // if no obstacles
forward(1000); // move forward 1000 mm
backward(1000); // move backward 1000 mm
//...
}
}
正向功能:
void forward(int distance){ // distance in mm
int desiredRotationNumber= round(distance/circumference) ;
int desiredTicks = encoderResolution * desiredRotationNumber;
if (counter < desiredTicks) // variable counter counts the pulses from the encoder
{
analogWrite(motor,255);
}
else
{
analogWrite (motor,0);
}
}
问题是,如果我使用条件“如果”我的转发功能将只执行一次,然后程序跳转到下一个功能,但如果我使用“while循环”我的移动功能将正确执行,但我不会能够管理传感器或任何东西。
美丽的谢谢你,如果我发现一个障碍比从我的移动功能将无法运行,但如果障碍走了路?我怎么能恢复从我停在最后一个移动功能的移动方向集? – Apastrix 2014-12-10 23:18:35
我想你会需要一个机制来存储正在进行的移动列表(一个链接列表可能?),然后逐个拿出来。然后您可以从列表中轻松恢复。 – didierc 2014-12-10 23:22:35
我会试一试,再次感谢。 – Apastrix 2014-12-10 23:25:11