Код двигателя для «Pirate: 4WD Arduino Mobile Robot Kit с Bluetooth 4.0» работать не будет.
Плата — RoMeo BLE V 1.0, и я установил плату на Arduino UNO в части платы Arduino IDE, так как не могу найти плату RoMeo.
Это код двигателей.
``int speedPin_M1 = 5; //Регулятор скорости M1
int speedPin_M2 = 6; //Контроль скорости M2
int directionPin_M1 = 4; //Управление направлением M1
int directionPin_M2 = 7; //Управление направлением M1
void setup(){
}
void loop(){
carAdvance(150,150);
delay(1000);
carBack(150,150);
delay(1000);
carTurnLeft(150,150);
delay(1000);
carTurnRight(150,150);
delay(1000);
}
void carStop(){ // Остановка двигателя
digitalWrite(speedPin_M2,0);
digitalWrite(directionPin_M1,LOW);
digitalWrite(speedPin_M1,0);
digitalWrite(directionPin_M2,LOW);
}
void carTurnLeft(int leftSpeed,int rightSpeed){ //Поворот налево
analogWrite (speedPin_M2,leftSpeed); //Управление скоростью ШИМ
digitalWrite(directionPin_M1,LOW);
analogWrite (speedPin_M1,rightSpeed);
digitalWrite(directionPin_M2,HIGH);
}
void carTurnRight(int leftSpeed,int rightSpeed){ //Поворот направо
analogWrite (speedPin_M2,leftSpeed);
digitalWrite(directionPin_M1,HIGH);
analogWrite (speedPin_M1,rightSpeed);
digitalWrite(directionPin_M2,LOW);
}
void carBack(int leftSpeed,int rightSpeed){ //Двигаемся назад
analogWrite (speedPin_M2,leftSpeed);
digitalWrite(directionPin_M1,LOW);
analogWrite (speedPin_M1,rightSpeed);
digitalWrite(directionPin_M2,LOW);
}
void carAdvance(int leftSpeed,int rightSpeed){ //Двигаемся вперед
analogWrite (speedPin_M2,leftSpeed);
digitalWrite(directionPin_M1,HIGH);
analogWrite (speedPin_M1,rightSpeed);
digitalWrite(directionPin_M2,HIGH);
}
После загрузки кода ничего не происходит. Лампочка платы моргает и после этого ничего не происходит. Как заставить двигатели двигаться в соответствии с кодом в цикле?
@Yaken, 👍0
Обсуждение1 ответ
Лучший ответ:
Чтобы сформулировать мои комментарии как ответ:
Ваша плата имеет некоторые особенности, связанные с двигателями/сервоприводами:
Поскольку USB-порт компьютера не может обеспечить достаточный ток для двигателей, их можно отключить с помощью выключателя питания двигателя. Он должен быть установлен в положение OFF при подключении платы к порту USB. Для работы двигателей плате необходим собственный источник питания (в вашем случае батарея), который может обеспечить достаточный ток. В этом случае вам необходимо переключить переключатель питания двигателя в положение «ВКЛ», чтобы включить драйверы двигателя. Внимание: Если вы включите двигатели при подключении к порту USB, вы можете повредить плату, а также порт USB.
Двигатели подключаются к контактам 4, 5, 6 и 7. Если двигатели вам не нужны, вы можете использовать эти контакты для других целей. Для этого плата позволяет отключить драйвер двигателя от этих контактов. Если перемычки, помеченные как «Перемычки клемм управления двигателем» на изображении на этой странице документации, вставлены в контактную перемычку пары (на изображении они уже вставлены), к упомянутым контактам будут подключены драйверы двигателей. Если перемычки туда не вставлены, двигатели работать не будут, так как они не подключены к управляющим контактам.
Обратите внимание, что вам нужно использовать pinMode(pin_number, OUTPUT);
в функции setup()
для всех контактов, которые вы хотите использовать digitalWrite ()
, потому что только в этом случае соответствующий вывод будет установлен на выход (только тогда можно будет выводить цифровой сигнал по digitalWrite()
). analogWrite()
настроит для вас соответствующий вывод, но рекомендуется в любом случае установить его как OUTPUT при настройке, чтобы читателям было понятно, что этот вывод является выходом.
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Когда я прочитал [документацию](https://wiki.dfrobot.com/RoMeo_BLE__SKU_DFR0305_), я нашел это: «Пожалуйста, ВЫКЛЮЧИТЕ выключатель питания двигателя, когда вы отлаживаете двигатель через USB-порт». Это означает, что двигатели не могут работать от USB, поскольку он не может обеспечить достаточный ток. Загрузите свой код, выключив переключатель питания двигателя. Затем вытащите плату из USB-порта и подключите внешний источник питания к Vin. Затем включите выключатель питания двигателя., @chrisl
Пожалуйста, попробуйте это, и если это сработает, я напишу официальный ответ на ваш вопрос., @chrisl
Вот конкретные шаги, которые я предпринял. Подключил USB с выключенным аккумулятором. Загрузил код, отключил USB и включил питание двигателей от аккумуляторов. После этого ничего не происходит., @Yaken
Итак, у меня работает этот код, который печатает привет при нажатии клавиши «z», НО двигатели не отвечают, когда я посылаю клавиши «w, a, s, d» через последовательный монитор., @Yaken
1. Ваш код не читает никаких данных из последовательного порта, поэтому ни на что не может реагировать. Двигатели должны начать работать напрямую, поскольку именно об этом говорит ваш код. 2. Использовали ли вы выключатель питания двигателя и перемычку управления двигателем, установленную в правильное положение, как описано в документации, которую я связал?, @chrisl
И в вашем коде вы не устанавливаете режим вывода для вывода направления. Они должны быть установлены на ВЫХОД., @chrisl
1. Итак, выключатель питания на панели управления двигателем включен. 2. Провода от двигателей размещаются соответственно в блоках управления двигателями. 3. Я вообще не использовал перемычки клемм управления двигателем, так как не знаю, как ими пользоваться. Я новичок, извините за путаницу, @Yaken
Перемычки клемм управления двигателем помечены на изображении в связанной документации как «Перемычки клемм управления двигателем». Вставьте перемычки на все 4 пары перемычек, как показано на рисунке., @chrisl
большое вам спасибо... Теперь машина работает, проблема заключалась в том, что на плате в инструкции уже были спаяны клеммные перемычки, и ваш комментарий спас положение. Я в восторге... Еще раз спасибо..., @Yaken
Замечательно. Я сформулировал свой комментарий как правильный ответ. Если вы считаете, что это достаточно отвечает на ваш вопрос, пожалуйста, примите его. что ты, @chrisl