Робот не едет по черной линии

Робот не едет по черной линии. Крутится на месте.

unsigned long _time;
//====================================
int left_sensor_line = 9;
int right_sensor_line = 8;
//====================================
void setup()
{
  // Переменные – номера контактов (пинов) Arduino.
  // Для левых и правых моторов машинки.
  setup_motor_system(2, 3, 4, 5);
  _stop(); //Двигатели остановлены.
  // Сенсорные пины переводим в состояние ввода данных.
  pinMode(left_sensor_line, INPUT);
  pinMode(right_sensor_line, INPUT);
  _time = millis();
  // Устанавливаем скорость порта связи с ПК.
  Serial.begin(9600);
}
// Основная программа.
void loop()
{
  while (true)
  {
    bool ls = digitalRead(left_sensor_line);
    bool rs = digitalRead(right_sensor_line);
    //   Serial.println(ls);
    //   Serial.println(rs);
    //   Serial.println("======================================");
    //  delay(500);
    //Готов к приему.
    if ((!ls) && (!rs))
    {
      forward();
    }
    else
    {
      if (ls)
      {
        left();
      }
      else
      {
        right();
      }
    }
    delayMicroseconds(500);
    _stop();
    delayMicroseconds(100);
  }
}

int motor_L1, motor_L2;
int motor_R1, motor_R2;
//===============================================
// Функция инициализации управления моторами.
void setup_motor_system(int L1, int  L2, int  R1, int R2)
{
  // Заносятся в переменные номера контактов (пинов) Arduino.
  motor_L1 = L1; motor_L2 = L2;
  // Для левых и правых моторов робота.
  motor_R1 = R1; motor_R2 = R2;
  // Переводятся указанные порты в состояние вывода данных.
  pinMode(motor_L1, OUTPUT);
  pinMode(motor_L2, OUTPUT);
  pinMode(motor_R1, OUTPUT);
  pinMode(motor_R2, OUTPUT);
}
//===============================================
// движение вперед.
void forward()
{
  // Если двигатель будет работать не в ту сторону,
  // поменять на нем контакты местами.
  digitalWrite(motor_L1, HIGH);
  digitalWrite(motor_L2, LOW);
  digitalWrite(motor_R1, HIGH);
  digitalWrite(motor_R2, LOW);
}
//===============================================
// Поворот налево с блокировкой левых колес.
void forward_left()
{
  // блокировка вращения левых колес.
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, LOW);
  // правые колеса вращаются.
  digitalWrite(motor_R1, HIGH);
  digitalWrite(motor_R2, LOW);
}
//===============================================
// Поворот направо с блокировкой правых колес.
void forward_right()
{
  // левые колеса вращаются.
  digitalWrite(motor_L1, HIGH);
  digitalWrite(motor_L2, LOW);
  // блокировка вращения правых колес.
  digitalWrite(motor_R1, LOW);
  digitalWrite(motor_R2, LOW);
}
// Поворот налево на месте.
void left()
{
  // левые колеса вращаются назад.
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_L2, HIGH);
  // правые колеса вращаются вперед.
  digitalWrite(motor_R1, HIGH);
  digitalWrite(motor_R2, LOW);
}
//===============================================
// Поворот направо на месте.
void right()
{
  // левые колеса вращаются вперед.
  digitalWrite(motor_L1, HIGH);
  digitalWrite(motor_L2, LOW);
  // правые колеса вращаются назад.
  digitalWrite(motor_R1, LOW);
  digitalWrite(motor_R2, HIGH);
}


// Включаем движение назад.
void backward()
{
  // Смена направления вращения двигателей.
  digitalWrite(motor_L2, HIGH);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_R2, HIGH);
  digitalWrite(motor_R1, LOW);
}
//===============================================
// Включаем движение назад.
void backward_left()
{
  // Смена направления вращения двигателей.
  digitalWrite(motor_L2, LOW);
  digitalWrite(motor_L1, HIGH);
  digitalWrite(motor_R2, HIGH);
  digitalWrite(motor_R1, LOW);
}
//===============================================
// Включаем движение назад.
void backward_right()
{
  // Смена направления вращения двигателей.
  digitalWrite(motor_L2, HIGH);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_R2, LOW);
  digitalWrite(motor_R1, HIGH);
}
//===============================================


void _stop()
{
  // Блокировка всех колес.
  digitalWrite(motor_L2, LOW);
  digitalWrite(motor_L1, LOW);
  digitalWrite(motor_R2, LOW);
  digitalWrite(motor_R1, LOW);
}

Видео можно сюда загрузить? Как загрузить сюда видео?

зачем?

Хотел показать наглядно как машина себя ведет.

Вот это?

я и без видео могу представить :slight_smile:

В чем интересно причина?

Восстание машин?

2 лайка

Ну эта то дааа. Само собой. ) Как заставить его ехать по черной линии то?)

Плеткой пробовали? На лошадей действует…

Вы читали что написали вам в предыдущих темах про мои поправки?

И плеткой пробовали, и на ковер вызывали и арбуз ставили. Ничего не помогает.

Что именно?

Пост 50.

Да. Это я на писал.

Это пост 49.

Лучше с видосом, но не на ютубе.

Пальчиком подправить.

А серьёзно может 1000 причин - от плохого контакта до плохого датчика или неисправного колеса. Подробностей надо больше. Например - оба колеса вертятся? Может робот без линии ехать прямо? Датчик света срабатывает?

Вы говорите загадками, мудрейший.
В данных листингах тоже ошибка?