Почему мой 4WD Bluetooth автомобиль работает так медленно

Код

/*Автомобиль с Управлением Arduino Bluetooth
 * * Создано компанией Glen Tech 
 * https://www.youtube.com/glentech
  */

#include <AFMotor.h>

//initial motors pin
AF_DCMotor motor1(1); 
AF_DCMotor motor2(2); 
AF_DCMotor motor3(3);
AF_DCMotor motor4(4);

char command; 

void setup() 
{       
  Serial.begin(9600);  //Set the baud rate to your Bluetooth module.
}

void loop(){
  if(Serial.available() > 0){ 
    command = Serial.read(); 
    Stop(); //initialize with motors stoped
    //Change pin mode only if new command is different from previous.   
    //Serial.println(command);
    switch(command){
    case 'F':  
      forward();
      break;
    case 'B':  
       back();
      break;
    case 'L':  
      left();
      break;
    case 'R':
      right();
      break;
    }
  } 
}

void forward()
{
  motor1.setSpeed(1000); //Define maximum velocity
  motor1.run(FORWARD); //rotate the motor clockwise
  motor2.setSpeed(1000); //Define maximum velocity
  motor2.run(FORWARD); //rotate the motor clockwise
  motor3.setSpeed(1000);//Define maximum velocity
  motor3.run(FORWARD); //rotate the motor clockwise
  motor4.setSpeed(1000);//Define maximum velocity
  motor4.run(FORWARD); //rotate the motor clockwise
}

void back()
{
  motor1.setSpeed(1000); //Define maximum velocity
  motor1.run(BACKWARD); //rotate the motor anti-clockwise
  motor2.setSpeed(1000); //Define maximum velocity
  motor2.run(BACKWARD); //rotate the motor anti-clockwise
  motor3.setSpeed(1000); //Define maximum velocity
  motor3.run(BACKWARD); //rotate the motor anti-clockwise
  motor4.setSpeed(1000); //Define maximum velocity
  motor4.run(BACKWARD); //rotate the motor anti-clockwise
}

void left()
{
  motor1.setSpeed(255); //Define maximum velocity
  motor1.run(BACKWARD); //rotate the motor anti-clockwise
  motor2.setSpeed(255); //Define maximum velocity
  motor2.run(BACKWARD); //rotate the motor anti-clockwise
  motor3.setSpeed(255); //Define maximum velocity
  motor3.run(FORWARD);  //rotate the motor clockwise
  motor4.setSpeed(255); //Define maximum velocity
  motor4.run(FORWARD);  //rotate the motor clockwise
}

void right()
{
  motor1.setSpeed(255); //Define maximum velocity
  motor1.run(FORWARD); //rotate the motor clockwise
  motor2.setSpeed(255); //Define maximum velocity
  motor2.run(FORWARD); //rotate the motor clockwise
  motor3.setSpeed(255); //Define maximum velocity
  motor3.run(BACKWARD); //rotate the motor anti-clockwise
  motor4.setSpeed(255); //Define maximum velocity
  motor4.run(BACKWARD); //rotate the motor anti-clockwise
} 

void Stop()
{
  motor1.setSpeed(0); //Define minimum velocity
  motor1.run(RELEASE); //stop the motor when release the button
  motor2.setSpeed(0); //Define minimum velocity
  motor2.run(RELEASE); //rotate the motor clockwise
  motor3.setSpeed(0); //Define minimum velocity
  motor3.run(RELEASE); //stop the motor when release the button
  motor4.setSpeed(0); //Define minimum velocity
  motor4.run(RELEASE); //stop the motor when release the button
}

, 👍1

Обсуждение

Добро пожаловать! Пожалуйста, поместите свой код в блок кода (добавив 4 пробела перед каждой строкой кода), чтобы сделать его более читаемым. Кроме того, добавьте четкое описание в свой пост о вашем оборудовании, проблеме, которую вы пытаетесь решить, и о том, что вы уже пытались. Ссылка на YouTube недостаточна. Какую батарею вы используете для своего проекта?, @StarCat

Можете ли вы измерить напряжение батареи, когда двигатели включены?, @gbg

Какой аккумулятор вы используете? Блок батарей 9 В (как показано на рисунке) не может обеспечить достаточный ток для правильного запуска двигателя., @Gerben

Фотография вашего реального оборудования также будет полезна., @sempaiscuba

Переместите stop() в setup () и добавьте некоторую delay() в свой loop(). Ваша петля слишком занята и постоянно останавливается и задает направление снова и снова. Также введите статус, который содержит текущий статус направления, если команда совпадает с текущим статусом направления, пропустите раздел настройки "переключатель", он нужен только при изменении команды., @hcheung


1 ответ


1

Я не могу найти в вашем коде проблемы, которая, как я убежден, является вашей проблемой. Не видя вашей спецификации двигателя, я бы поспорил, что ваша проблема заключается в одной из двух вещей:

1) Батарея 9 В имеет низкий ток по сравнению с большинством батарей, которые я использовал для питания любых приличных двигателей постоянного тока. Есть ли у вас доступ к лучшему источнику тока, который вы могли бы попробовать?

2) У каждого двигателя есть компромисс между крутящим моментом и максимальной скоростью, определяемый внутренним передаточным числом. В зависимости от типа двигателя у него может не хватить крутящего момента для разгона автомобиля до значительной скорости.

,