int distance;
int Step = 0; // Шаги программы

void setup() {
  // Инициализируем порты для моторов
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT); // Правый 
  pinMode(6, OUTPUT); // Левый
  pinMode(7, OUTPUT);
        
  // Порты для датчика линии
  pinMode(12, INPUT);  // Левый

        
  // Порты дальномера
  pinMode(8, OUTPUT); // Триггер
  pinMode(3, INPUT);  // Эхо
  }

   void loop() {
  // Шаг 0 - ожидание 1 с после запуска 
    if(Step == 0) {
      analogWrite(5, 0); // Скорость правый мотор
      analogWrite(6, 0); // Скорость левый мотор 
      delay(1000);
      Step = 1;
      }
    // Шаг 1 - Вращение, поиск кегли. 
    if(Step == 1) {
      analogWrite(5, 70); // Скорость правый мотор
      analogWrite(6, 70); // Скорость левый мотор 
      digitalWrite(4, 0); // Направление правый
      digitalWrite(7, 1); // Направление левый
      
      // Посылка импульса соник
      digitalWrite(8, HIGH);
      delayMicroseconds(10);
      digitalWrite(8, LOW);

      // Чтение импульса
      distance = pulseIn(3, HIGH)/58;
      if(distance <= 50) {
        Step = 2; // Переключение на второй шаг.
      }
    }

    // Шаг 2 - Выталкиваем кеглю, пока не встретим линию. 
    if(Step == 2) {
      analogWrite(5, 100);
      analogWrite(6, 100);  
      digitalWrite(4, 1);
      digitalWrite(7, 1);
      
      // Считываем значения датчика линии
      bool Lsensor = digitalRead(12);
      if(Lsensor == 1) {
        Step = 3; // Переключение на третий шаг.      
      }
    }

       // Шаг 3 - Отползаем. 
    if(Step == 3) {
      digitalWrite(4, 0);
      digitalWrite(7, 0);

      delay(800);
      Step = 0;
    }
   }