Загрузка данных


// ПИНЫ МОТОРОВ ДЛЯ ПЛАТЫ LART R-5
// Левый мотор (разъем M-LF)
const int motorL_DIR = 4;  
const int motorL_PWM = 5;  
// Правый мотор (разъем M-RT)
const int motorR_PWM = 6;  
const int motorR_DIR = 7;  

// ПИНЫ ДАТЧИКОВ ЛИНИИ (из твоих фото)
const int sensorL = 2; // Левый датчик на пине D2
const int sensorR = 3; // Правый датчик на пине D3

// СКОРОСТЬ (0-255). 150 — средняя, чтобы не улетел с линии
const int speed = 150; 

void setup() {
  pinMode(motorL_DIR, OUTPUT);
  pinMode(motorL_PWM, OUTPUT);
  pinMode(motorR_PWM, OUTPUT);
  pinMode(motorR_DIR, OUTPUT);
  
  pinMode(sensorL, INPUT);
  pinMode(sensorR, INPUT);
}

void loop() {
  // Считываем значения с датчиков
  bool left = digitalRead(sensorL);
  bool right = digitalRead(sensorR);

  if (left == HIGH && right == HIGH) {
    // ОБА НА ЧЕРНОМ = ПЕРЕКРЕСТОК
    stopRobot();
    while(true); // Робот замирает навсегда (до нажатия Reset)
  } 
  else if (left == LOW && right == LOW) {
    // ОБА НА БЕЛОМ = ЕДЕМ ВПЕРЕД
    moveForward();
  } 
  else if (left == HIGH && right == LOW) {
    // ЛЕВЫЙ НА ЧЕРНОМ = ПОВОРОТ ВЛЕВО
    turnLeft();
  } 
  else if (left == LOW && right == HIGH) {
    // ПРАВЫЙ НА ЧЕРНОМ = ПОВОРОТ ВПРАВО
    turnRight();
  }
}

// Описание команд движения
void moveForward() {
  digitalWrite(motorL_DIR, HIGH); // Если едет назад, замени HIGH на LOW
  analogWrite(motorL_PWM, speed);
  digitalWrite(motorR_DIR, HIGH); // Если едет назад, замени HIGH на LOW
  analogWrite(motorR_PWM, speed);
}

void turnLeft() {
  analogWrite(motorL_PWM, 0);      // Левое колесо стоит
  analogWrite(motorR_PWM, speed);  // Правое толкает
}

void turnRight() {
  analogWrite(motorL_PWM, speed);  // Левое толкает
  analogWrite(motorR_PWM, 0);      // Правое колесо стоит
}

void stopRobot() {
  analogWrite(motorL_PWM, 0);
  analogWrite(motorR_PWM, 0);
}