// пишем основной алгоритм для робота void runForest() { int spdL = 150, spdR = 170; // скорости pip(); gripV1(100); // сканим верхний ряд bool o[5] = {0, 0, 0, 0, 0}; // массив логических элементов int n = 5; // количество перекрёстков int i = 0; // номер текущего перекрёстка while (i < n) { goLine_c(spdL, spdR); // едем до перекрёстка turnR(spdL, 1000); // поворачиваем delay(200); // замерли перед замером if (analogRead(IR) > 300) { // проверяем наличие кубика pip(); // пикаем o[i] = 1; // запоминаем, что на i-м месте есть кубик } turnR_back(spdL, 500); // возвращаемся на основную линию i++; // увеличиваем номер перекрёстка (следующий) } goLine_c(spdL, spdR); // едем в верхний правый угол turnR(spdL, 1000); // поворачиваем goLine_c(spdL, spdR); // едем в нижний правый угол turnR(120, 1000); // поворачиваем // сканим нижний ряд bool o2[5] = {0, 0, 0, 0, 0}; // массив логических элементов i = 0; // номер текущего перекрёстка while (i < n) { goLine_c(spdL, spdR); // едем до перекрёстка turnR(spdL, 1000); // поворачиваем delay(200); // замерли перед замером if (analogRead(IR) > 300) { // проверяем наличие кубика pip(); // пикаем o2[4 - i] = 1; // запоминаем, что на i-м месте есть кубик } turnR_back(120, 500); // возвращаемся на основную линию i++; // увеличиваем номер перекрёстка (следующий) } goLine_c(spdL, spdR); // едем в верхний правый угол turnR(spdL, 1000); // поворачиваем goLine_c(spdL, spdR); // едем в нижний правый угол turnR(spdL, 1000); // поворачиваем // мы на старте, знаем где кубики... }