Почему мой 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
}
@Abhi, 👍1
Обсуждение1 ответ
▲ 1
Я не могу найти в вашем коде проблемы, которая, как я убежден, является вашей проблемой. Не видя вашей спецификации двигателя, я бы поспорил, что ваша проблема заключается в одной из двух вещей:
1) Батарея 9 В имеет низкий ток по сравнению с большинством батарей, которые я использовал для питания любых приличных двигателей постоянного тока. Есть ли у вас доступ к лучшему источнику тока, который вы могли бы попробовать?
2) У каждого двигателя есть компромисс между крутящим моментом и максимальной скоростью, определяемый внутренним передаточным числом. В зависимости от типа двигателя у него может не хватить крутящего момента для разгона автомобиля до значительной скорости.
,
@Chris
Смотрите также:
- Можно ли измерить скорость акселерометром? Насколько точно?
- Arduino Pro Micro, получить данные с контакта Tx?
- Хочу создать Bluetooth audio control (увеличение/уменьшение громкости, воспроизведение, пауза и т.д.) для смартфона
- Невозможно подключиться к Bluetooth hc-05.
- Проблемы с надежным подключением с использованием HC-05 в качестве ведущего устройства Bluetooth
- Как решить проблему AT+INQ ERROR (1F), AT+INIT ERROR(17) на модуле Bluetooth HC-05?
- Модуль Bluetooth HC-05 мигает красным светом - Arduino Uno
- Bluetooth-модуль HC-05 — команда INQ не работает
Добро пожаловать! Пожалуйста, поместите свой код в блок кода (добавив 4 пробела перед каждой строкой кода), чтобы сделать его более читаемым. Кроме того, добавьте четкое описание в свой пост о вашем оборудовании, проблеме, которую вы пытаетесь решить, и о том, что вы уже пытались. Ссылка на YouTube недостаточна. Какую батарею вы используете для своего проекта?, @StarCat
Можете ли вы измерить напряжение батареи, когда двигатели включены?, @gbg
Какой аккумулятор вы используете? Блок батарей 9 В (как показано на рисунке) не может обеспечить достаточный ток для правильного запуска двигателя., @Gerben
Фотография вашего реального оборудования также будет полезна., @sempaiscuba
Переместите
stop()
вsetup ()
и добавьте некоторуюdelay()
в свойloop()
. Ваша петля слишком занята и постоянно останавливается и задает направление снова и снова. Также введите статус, который содержит текущий статус направления, если команда совпадает с текущим статусом направления, пропустите раздел настройки "переключатель", он нужен только при изменении команды., @hcheung