Полноприводной вездеход не движется
Я пытаюсь создать полноприводный автомобиль. Я загрузил код, все соединения в порядке, я использовал L298N и HC-05. Но при запуске приложения Bluetooth моторы не вращаются. Я пробовал и с Уно, и с Нано, но ничего не происходит. Может ли кто-нибудь помочь мне найти ошибки?
Я использовал этот код в Arduino Uno:
#include <SoftwareSerial.h>
SoftwareSerial BT(0, 1); //TX, RX соответственно
String readvoice;
void setup() {
BT.begin(9600);
Serial.begin(9600);
pinMode(4, OUTPUT);
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
}
//------------------------------------------------ -----------------------//
void loop() {
while (BT.available()) { //Проверяем, есть ли доступный байт для чтения
delay(10); //Добавлена задержка, чтобы сделать работу стабильной
char c = BT.read(); //Проводим последовательное чтение
readvoice += c; //строим строку- "вперед", "назад", "влево" и "вправо"
}
if (readvoice.length() > 0) {
Serial.println(readvoice);
if (readvoice == "*forward#")
{
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(100);
}
else if (readvoice == "*back#")
{
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
delay(100);
}
else if (readvoice == "*left#")
{
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(800);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(100);
}
else if (readvoice == "*right#")
{
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(800);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(100);
}
else if (readvoice == "*stop#")
{
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(100);
}
else if (readvoice == "*keep watch in all direction#")
{
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(100);
}
else if (readvoice == "*show me Garba#")
{
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(400);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(600);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
delay(500);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(500);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(400);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(600);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
delay(500);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(500);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(400);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(600);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
delay(500);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(500);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(400);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(600);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
delay(500);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(500);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(400);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(600);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
delay(500);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(500);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(400);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(600);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
delay(500);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(500);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(400);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(600);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
delay(500);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(500);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(400);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
delay(600);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
delay(500);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(500);
}
readvoice = ""; //Сбрасываем переменную
}
}
Это электрическая схема ровера:
@Aryan Dhall, 👍0
Обсуждение1 ответ
Если у вас правильная проводка, которую вы, вероятно, уже проверили 100 раз, то, вероятно, дело в том, что вы не подаете достаточный ток, чтобы остановить остановку двигателя. Найдите в Интернете техническое описание двигателя и найдите «Ток опрокидывания», а затем проверьте, подаете ли вы достаточный ток.
Проверяли ли вы двигатель без присоединенного редуктора, если это возможно?
Двигателю будут предъявляться требования как по напряжению, так и по току. Вы используете двигатель на 6 В, но нам также необходимо знать рабочий ток и ток остановки, чтобы вы могли тренироваться, если ваши батареи способны его обеспечить. Вы пытаетесь запустить один двигатель или 4? Сначала запустите один двигатель, а затем увеличивайте количество до 4, когда вам потребуется подать в 4 раза больше мощности.
Также могу ли я просто проверить, подключены ли батареи последовательно (чтобы обеспечить напряжение 7,4 В). Этого, вероятно, недостаточно, если двигателям требуется ровно 6 В из-за падения напряжения на микросхеме в 2 В.
Измерьте напряжение на мосту и на двигателе, как показано на веб-странице. Также поможет измерение тока, но вам придется поискать, как лучше всего это сделать.
Сэр, я также использовал батарею на 3,7 В и емкостью 7800 мАч для мотор-редуктора...., @Aryan Dhall
Да, сэр, я пробовал без оборудования, и оно все равно вибрирует...., @Aryan Dhall
Пожалуйста, не могли бы вы проверить и остальные пункты в ответе?, @Code Gorilla
- avrdude ser_open() can't set com-state
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- Ведомое устройство Arduino с двумя мастерами, использующими одну и ту же шину I2C?
- Arduino Uno: avrdude: stk500_recv(): программатор не отвечает
- В чем разница между delay() и delaymicroseconds()
- Программирование Arduino на Паскале?
- Как синхронизировать несколько ардуино?
- Arduino nano KiCad символы
Сначала попробуйте без Bluetooth. Какой источник питания вы используете для двигателя? L298 — это деталь с ужасными потерями, и вам понадобится одна или две дополнительные ячейки АА, чтобы компенсировать ее потери. Между тем, маленькие 9-вольтовые батареи не смогут в настоящее время использоваться в проекте по производству двигателей. А где еще два мотора, чтобы сделать этот 4wd?, @Chris Stratton
Сэр, я использовал батарею на 9 В, соединил два других двигателя с другим двигателем и соединил их положительную и отрицательную клеммы вместе, и, пожалуйста, также скажите мне, правильный ли код или нет, и если есть проблемы с L298N, то что мне делать? использовать.., @Aryan Dhall
Не используйте батареи напряжением 9 В для моторных проектов. Попробуйте 6 или 7 ячеек АА — с абсурдно потерями L298, может быть, даже 8 ячеек АА., @Chris Stratton
Спасибо, сэр, это сработало без Bluetooth, но в чем тогда проблема с подключением Bluetooth????, @Aryan Dhall
Ну, во-первых, вам не следует использовать программный последовательный порт на контактах 0 и 1, это аппаратный последовательный порт. Вы решили сделать это самостоятельно или следуете указаниям, написанным кем-то, кто не знает, что делает?, @Chris Stratton
Я сам попробовал, сэр, а потом куда подключать контакты tx и rx вместо последовательных контактов 1 и 0....., @Aryan Dhall
Возможный дубликат [Arduino 4wd rover](https://arduinoprosto.ru/q/52375/arduino-4wd-rover), @Code Gorilla