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