Обход массива INT двумя способами - это смешной роботизированный код (на языке C).
У меня есть такой массив позиций: int pos[] = {0, 45, 90, 135, 180, 135, 90, 45};
Эти позиции используются для перемещения серводвигателя.
45 90 135
\ | /
\ | /
\ | /
0 ----------- 180
В основном loop()
я проверяю расстояние от препятствия, и если оно < xx Cm
, мой сервопривод должен поворачиваться на следующий шаг (следующую позицию массива), пока не найдет свободный путь (> xx Cm
).
Моя основная задача проста:
int main (int argc, const char * argv[]) { for (;;) find(); }
и моя основная функция (найти) такова:
void find() {
for ( i=0; i<sizeof(pos); i++ ) // Traversing position array
{
distance = rand() % 7; // Simulate obstacle distance
move( pos[i] ); // Simulate movements
if (i==sizeof(pos)) { i=1; } // Try to reset the "i" counter. PROBLEM!
if ( distance<=5 ) continue; // Is there an obstacle?
sleep(2); // Debug sleep
find(); // Similar recursion
}
}
Я не знаю, что не так в этом коде, ноМне нужно двигать сервопривод, пока нет препятствий.
Пример : В позиции 90
я нахожу препятствие.Я хочу зациклить массив слева направо и наоборот контролировать расстояние на каждом шагу.Если я не нахожу автостраду, print("ko")
else print("ok")
.
Как мне исправить этот код для правильной работы?