Программа для запуска двух двигателей с помощью драйвера двигателя.

Я пытаюсь написать программу, которая запускала бы два двигателя по часовой стрелке, а затем против часовой стрелки. Но моя программа заставляет мои двигатели каждый раз вращаться только по часовой стрелке. Он вообще не вращается против часовой стрелки. Может ли кто-нибудь помочь мне найти ошибку?

Основной код:

void loop()
{
  // включаем двигатель А
  digitalWrite(In1, HIGH);
  digitalWrite(In2, LOW);
  // устанавливаем скорость 150 из 255
  analogWrite(EnA, 150);
  // включаем двигатель B
  digitalWrite(In3, HIGH);
  digitalWrite(In4, LOW);
  // устанавливаем скорость 150 из 255
  analogWrite(EnB, 150);
  delay(2000);
   digitalWrite(In1, LOW);
  digitalWrite(In2, HIGH);
   digitalWrite(In3,LOW);
  digitalWrite(In4, HIGH);
  // теперь выключаем моторы
  digitalWrite(In1, LOW);
  digitalWrite(In2, LOW);  
  digitalWrite(In3, LOW);
  digitalWrite(In4, LOW);
  delay(2000);
}

, 👍0

Обсуждение

Сколько времени проходит между поворотом против часовой стрелки и остановкой двигателей...?, @Majenko

Я не устанавливал никакой задержки между вращением против часовой стрелки., @hasib ryan

Что это значит...?, @Majenko


1 ответ


Лучший ответ:

0

проверьте это

void loop()
{
  // включаем двигатель А
  digitalWrite(In1, HIGH);
  digitalWrite(In2, LOW);
  // устанавливаем скорость 150 из 255
  analogWrite(EnA, 150);
  // включаем двигатель B
  digitalWrite(In3, HIGH);
  digitalWrite(In4, LOW);
  // устанавливаем скорость 150 из 255
  analogWrite(EnB, 150);
  delay(2000);
   digitalWrite(In1, LOW);
  digitalWrite(In2, HIGH);
   digitalWrite(In3,LOW);
  digitalWrite(In4, HIGH);
  // теперь выключаем моторы
  delay(5000);
  digitalWrite(In1, LOW);
  digitalWrite(In2, LOW);  
  digitalWrite(In3, LOW);
  digitalWrite(In4, LOW);
  delay(2000);
}
,