// ПИНЫ МОТОРОВ ДЛЯ ПЛАТЫ 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);
}