Проблемы с запуском моих 12-вольтовых двигателей постоянного тока на моем Mega 2560 Arduino

Может ли кто-нибудь просмотреть мой код, чтобы определить, не в нем ли проблема?

Если с кодом все в порядке, может ли кто-нибудь посмотреть на мое изображение и сказать мне, правильно ли я настроил щит и моторы, и посмотреть, не в этом ли проблема?

Вот изображение установки Arduino:

Вот мой код:

#include <AFMotor.h>

AF_DCMotor motor(1, MOTOR12_8KHZ);
AF_DCMotor motor2(2, MOTOR12_8KHZ);
AF_DCMotor motor3(2, MOTOR12_1KHZ);


void setup()  {
  Serial.begin(9600);
  Serial.println("Motor Test!");
  motor.setSpeed(20); //установить скорость двигателя
  motor2.setSpeed(20); //установить скорость двигателя
  motor3.setSpeed(25); //установить скорость двигателя

}

void loop() {
  Serial.print("tick");
  motor.run(FORWARD);
  delay(2000);

  Serial.print("tock");
  motor.run(RELEASE);
  delay(5000);

  Serial.print("tack"); //начинается первая песня
  motor.run(BACKWARD);
  delay(2000);

  Serial.print("tock");
  motor.run(RELEASE);
  delay(14000);

  Serial.print("tack"); 
  motor.run(BACKWARD);
  delay(2000);

  Serial.print("tock"); // первая песня заканчивается
  motor.run(RELEASE);
  delay(13000);

  Serial.print("tick");
  motor.run(FORWARD);
  delay(2000);

  Serial.print("tock"); //начинается вторая песня
  motor.run(RELEASE);
  delay(24000);

  Serial.print("tick");
  motor.run(FORWARD);
  delay(2000);

  Serial.print("tock"); //вторая песня заканчивается
  motor.run(RELEASE);
  delay(17000);

   Serial.print("tick");
  motor.run(BACKWARD);
  delay(2000);

  Serial.print("tock"); //начинается третья песня
  motor.run(RELEASE);
  delay(23000);

  Serial.print("tick");
  motor.run(BACKWARD);
  delay(2000);

  Serial.print("tock"); // третья песня заканчивается
  motor.run(RELEASE);
  delay(21000);

  Serial.print("tick");
  motor.run(FORWARD);
  delay(2000);

  Serial.print("tock");
  motor.run(RELEASE);
  delay(5000);

  Serial.print("tick");
  motor.run(FORWARD);
  delay(3000);

  Serial.print("tack"); //начинается четвертая песня
  motor.run(RELEASE);
  delay(5000);

  Serial.print("tack"); 
  motor.run(BACKWARD);
  delay(2000);

  Serial.print("tock"); //четвертая песня заканчивается
  motor.run(RELEASE);
  delay(21000);
   //машущий мотор
  Serial.print("tick"); 
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tock");
  motor2.run(RELEASE);
  delay(5000);

  //Машущий мотор
  Serial.print("tick"); //начинается первая песня
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tack"); 
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tock");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tock");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tick");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tack"); 
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tock");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(BACKWARD);
  delay(2000);

   Serial.print("tock");
  motor2.run(FORWARD);
  delay(1000);

  Serial.print("tick");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tack"); 
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tock"); // первая песня заканчивается
  motor2.run(RELEASE);
  delay(14000);

  Serial.print("tick"); 
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tock");
  motor2.run(RELEASE);
  delay(5000);

  Serial.print("tack"); // Начинается вторая песня
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tick");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tack"); 
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tock");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tock");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tick");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tack"); 
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tock");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(BACKWARD);
  delay(2000);

   Serial.print("tock");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tick");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tack"); 
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tick");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tack"); 
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tock"); //вторая песня заканчивается
  motor2.run(RELEASE);
  delay(15000);


  Serial.print("tick"); 
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tock");
  motor2.run(RELEASE);
  delay(5000);

  Serial.print("tack"); // Начинается третья песня
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tick");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tack"); 
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tock");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tock");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tick");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tack"); 
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tock");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(BACKWARD);
  delay(2000);

   Serial.print("tock");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tick");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tack"); 
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tick");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tack"); 
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tick");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tick");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tock"); // третья песня заканчивается
  motor2.run(RELEASE);
  delay(14000);

  Serial.print("tick"); //начинается четвертая песня
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tack"); 
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tock");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tock");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tick");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tack"); 
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tock");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(BACKWARD);
  delay(2000);

   Serial.print("tock");
  motor2.run(FORWARD);
  delay(1000);

  Serial.print("tick");
  motor2.run(RELEASE);
  delay(1000);

  Serial.print("tick");
  motor2.run(FORWARD);
  delay(2000);

  Serial.print("tack"); 
  motor2.run(BACKWARD);
  delay(2000);

  Serial.print("tock"); //четвертая песня заканчивается
  motor2.run(RELEASE);
  delay(7000);

  //танцующий мотор
  Serial.print("tock"); //начинается первая песня
  motor3.run(RELEASE);
  delay(11000);

  Serial.print("tick"); 
  motor3.run(FORWARD);
  delay(22000);

  Serial.print("tock"); // первая песня останавливается // вторая песня начинается
  motor3.run(RELEASE);
  delay(16000);

  Serial.print("tick"); //Вторая песня останавливается
  motor3.run(FORWARD);
  delay(28000);

  Serial.print("tock"); // Начинается третья песня
  motor3.run(RELEASE);
  delay(15000);

  Serial.print("tick"); //Третья песня останавливается
  motor3.run(FORWARD);
  delay(33000);

  Serial.print("tock"); //начинается четвертая песня
  motor3.run(RELEASE);
  delay(16000);

  Serial.print("tick"); 
  motor3.run(FORWARD);
  delay(5000);

  Serial.print("tock");
  motor3.run(RELEASE);
  delay(1000);

  Serial.print("tick"); //четвертая песня заканчивается
  motor3.run(FORWARD);
  delay(16000);

  Serial.print("tock");
  motor3.run(RELEASE);
  delay(5000);
}

, 👍-2

Обсуждение

К сожалению, вы не скопировали сообщение об ошибке, а только сообщение о том, что произошла ошибка. Должно быть больше, что более конкретно объясняет проблему. Включите это в свой вопрос, @chrisl

Так как похоже проблема с загрузкой, попробуйте залить без подключенного моторшилда, @chrisl

@chrisl да, я сделал это вверху описания, вот и все, что говорит ошибка, @Tommy

И он не работает без моторного щита!, @Tommy

Вы выбрали правильный последовательный порт в IDE?, @Majenko

Я использую COM3 (Arduino Mega или Mega 2560) в том, что правильный также я на вычислении hp, @Tommy

@Tommy Вы можете активировать подробный вывод для загрузки и компиляции в настройках, @chrisl

@chrisl хорошо, я только что активировал подробный вывод, но теперь он говорит о новой ошибке, @Tommy

Я добавлю новую ошибку в вопрос, @Tommy

Похоже, IDE не может найти ваш Arduino. Если вы зайдете в диспетчер устройств, вы увидите свой Arduino в разделе «Порты»?, @Fahad

да, он показывает информацию о плате, @Tommy

Какие COM-порты показывает в диспетчере устройств?, @Fahad

COM3 (Arduino Mega или Mega 2560), @Tommy

для моего диспетчера устройств у меня (COM3) и для порта у меня COM3(Arduino Mega или Mega 2560) это IDE, @Tommy

@Tommy На данный момент твой вопрос - большой беспорядок. Вы редактировали его несколько раз, также удаляя сообщение об ошибке, описывающее вашу проблему. Ваш вопрос сформулирован недостаточно ясно для этого сайта (поскольку это не первый ваш вопрос, вы уже должны знать, как это сделать). Вы обязаны отследить ошибку до определенной части вашего проекта. Если у вас проблемы с загрузкой, это никак не связано с кодом. Вы должны использовать пример мигания, чтобы решить эту проблему. Наконец, когда вы сможете загрузить снова, вы сможете вернуться к своему коду., @chrisl


2 ответа


1

Возможно, вы пытаетесь загрузить свой код с помощью Инструменты -> Записать загрузчик. Вместо этого следует использовать Скетч -> Загрузить, сочетание клавиш CTRL + U или кнопку загрузки:

,

Когда я нажимаю на эту стрелку, она говорит, что загрузка завершена, но двигатели не работают., @Tommy

Теперь другая проблема. Завершенная загрузка означает, что ваш код загружен. Почему бы вам не отладить свой код и не открыть новый вопрос о том, с какой конкретной проблемой вы столкнулись?, @Fahad

как это другая проблема и зачем мне отлаживать свой код, если в коде нет ошибки, @Tommy

Я думал, твоя проблема в том, что ты не можешь загрузить свой код. По крайней мере, так говорит ваш длинный заголовок вопроса., @Fahad

Я думал, что загрузить означает загрузить его на плату и заставить работать двигатели постоянного тока., @Tommy

Загрузка кода заставит двигатели работать только *если сам код правильный*. Поскольку двигатели *не* работают, то либо код неверный, либо вы неправильно подключили или настроили моторный шилд., @Majenko

Простой способ проверить правильность настройки вашего оборудования — использовать пример кода Shield. Если вы используете Adafruit Shield, на их сайте есть очень подробный пример. Следуйте этому, и вы, вероятно, узнаете, что не так., @Fahad

я не думаю, что код неправильный, потому что я проверил его и исправил все ошибки, вы хотите взглянуть на код, @Tommy

Как вы проверили свой код? Ваш код работал раньше, а теперь не работает? Создание компилируемого кода не означает, что логика вашего кода верна. Вы хоть знаете, правильно ли вы подключили моторы или нет?, @Fahad

Я проверил это, нажав стрелку вверх с надписью «Проверить». И нет, моторы еще не заработали. думаю моторы правильно на месте, @Tommy

Опять же, мы продолжаем повторять, кнопка «Проверить» будет проверять только синтаксические ошибки и тому подобное, чтобы убедиться, что ваш код компилируется, она не будет проверять правильность логики вашего кода, а также не будет проверять правильность подключения вашего двигателя. или нет. Кажется, вам не хватает фундаментальных знаний об Arduino. Я бы посоветовал вам сначала научиться работать с Arduino, начиная с мигания светодиода. У Adafruit/Sparkfun есть стартовый комплект Arduino, который может оказаться полезным., @Fahad

@Tommy, кнопка проверки находит «синтаксические ошибки», такие как «1 + × 4 = 4» ... она не находит «логические ошибки», такие как «1 + 4 = 4»., @jsotola

Хорошо, не могли бы вы просто просмотреть мой код, чтобы увидеть, что не так? Я новичок в этом, я создаю большой проект, и этот материал, безусловно, самый сложный в моем проекте, я пытался сделать это уже около 3 недель., @Tommy

@jsotola ты можешь, @Tommy

@Tommy, ты неправильно подходишь к разработке программного обеспечения .... нет абсолютно никакой причины, по которой твой код должен быть чем-то большим, чем включение одного двигателя в одном направлении на одну секунду .... ты пытаешься построить гоночный автомобиль, прежде чем вы узнаете, как затянуть болт, @jsotola


1

Насколько я могу судить по картинке, которой вы поделились, у вас нет внешнего источника питания, подключенного к шилду для привода «12 двигателей постоянного тока».

Прочитайте https://learn.adafruit.com/adafruit-motor-shield/power-requirements для лучшего понимания того, как привести моторы в действие.

,