Добрый день, форумчане! Помогите разобраться с кодом! вот код: Код (Text): #include <Servo.h> //include Servo library const int dangerThresh = 10; //threshold for obstacles (in cm) int leftDistance, rightDistance; //distances on either side Servo panMotor; const int Trig = 11; const int Echo = 12; long distance_sm; long time_us; struct MOTOR // структура для хранения номеров pin-ов, к которым подключены моторчики { int in; // INVERTOR INPUT int enable; // ENABLE1 }; // определяем порты, к которым подключены моторчики MOTOR MOTOR1 = { 7, 9 }; MOTOR MOTOR2 = { 8, 10 }; int FORWARD = HIGH; int BACK = LOW; void setup() { panMotor.attach(6); //attach motors to proper pins panMotor.write(90); //set PING))) pan to center pinMode(Trig, OUTPUT); pinMode(Echo, INPUT); Serial.begin(9600); } void loop() { int distanceFwd =ping(); if (distanceFwd>dangerThresh) //if path is clear { motor1(FORWARD,255); motor2(FORWARD,255); //move forward } else //if path is blocked { motor1(FORWARD,0); motor2(FORWARD,0); panMotor.write(0); delay(500); rightDistance = ping(); //scan to the right delay(500); panMotor.write(180); delay(700); leftDistance = ping(); //scan to the left delay(500); panMotor.write(90); //return to center delay(100); compareDistance(); } } void compareDistance() { if (leftDistance>rightDistance) //if left is less obstructed { motor1(FORWARD,250); motor2(FORWARD,0); //turn left delay(2000); } else if (rightDistance>leftDistance) //if right is less obstructed { motor1(FORWARD,0); motor2(FORWARD,250); //turn right delay(2000); } else //if they are equally obstructed { motor1(FORWARD,0); motor2(FORWARD,250); //turn 180 degrees delay(2000); } } long ping() { digitalWrite(Trig, HIGH); // Подаем сигнал на выход микроконтроллера delayMicroseconds(10); // Удерживаем 10 микросекунд digitalWrite(Trig, LOW); // Затем убираем time_us=pulseIn(Echo, HIGH); // Замеряем длину импульса distance_sm=time_us/58; // Пересчитываем в сантиметры return distance_sm; } void motor1(int dir, int pwm) // первый вперёд { digitalWrite(MOTOR1.in, dir); analogWrite(MOTOR1.enable, pwm); } void motor2(int dir, int pwm) // первый вперёд { digitalWrite(MOTOR2.in, dir); analogWrite(MOTOR2.enable, pwm); } По идеи, при обнаружении препятствия, робот должен остановиться, повернуть датчик влево,записать значения, потом повернуть направо, опять записать значения и потом сравнить их. Исходя из сравнения, робот поворачивается либо влево, либо вправо. Робот при виде препятствия останавливается, выполняет повороты датчиком, однако не выполняет сравнение. Итог: он стоит, вращает датчиком и ничего не делает. В чем ошибка?