Начните с наведения порядка в вашем коде, и может быть очевидно, где что-то идет не так.Например, вы вызываете несколько проверок на Fwd
, выполняя:
if ((Fwd == true) && ... ) {
...
} else if ((Fwd == true) && ... ) {
...
} else if ((Fwd == true) && ... ) {
...
} else if ((Fwd == false) && ... ) {
...
} else if ((Fwd == false) && ... ) {
...
}
Это использует ценные ресурсы в памяти вашей программы.Было бы гораздо эффективнее выполнить одну проверку и оценить ее оттуда:
if (Fwd){
// Check sensor conditions here
} else {
// Check more sensor conditions here
}
На самом деле, вы, вероятно, могли бы вообще пропустить переменную Fwd
(если вы не используете ее в другом месте), спасая васбольше места в памяти:
// Check whether to go forward or backwards.
// >= 50 - forward
// < 50 - backward
if (sensors[0] >= 50) {
// Check sensor conditions here
} else {
// Check more sensor conditions here
}
В целом, вы можете получить что-то вроде:
// Check whether to go forward or backwards.
// >= 50 - forward
// < 50 - backward
if (sensors[0] >= 50) {
// Going forward, but which direction?
if (sensors[1] < 50) {
fwdRight();
} else if (sensors[2] < 50) {
fwdLeft();
} else {
// sensors[1] >= 50 AND sensors[2] >= 50
// Going straight forward
fwd();
}
} else {
// Check backward sensor conditions here
}
Этот ответ может не отвечать непосредственно на ваш вопрос, но он должен помочь вам лучше диагностировать то, чтопродолжается.