Я делаю радиоуправляемую машину для своего школьного проекта, и я впервые пишу коды.
Я использую Arduino Uno, моторный щит L293D и HC-05 для этого проекта.
Я следовал инструкциям из https://blog.miguelgrinberg.com/post/building-an-arduino-robot-part-ii-programming-the-arduino, и не мог правильно связаться с Arduino через соединение Bluetooth.
Все отлично работает с рисунком ниже:
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(6,7);
void setup()
{
BTSerial.begin(9600);
}
void loop()
{
if (BTSerial.available() > 0) {
char ch = BTSerial.read();
BTSerial.print("Received: ");
BTSerial.println(ch);
if (ch == 'a') {
digitalWrite(9, HIGH);
}
else {
digitalWrite(9, LOW);
}
}
}
Я могу включать и выключать светодиод на своем телефоне Android с этим эскизом, но если я включу определения для двигателей в эскиз, arduino непрерывно отправляет сообщения println на мой телефон, и он не отвечает на мою команду.
#include <SoftwareSerial.h>
#include <AFMotor.h>
SoftwareSerial BTSerial(6,7);
AF_DCMotor Motor1(1);
AF_DCMotor Motor2(2);
AF_DCMotor Motor3(3);
AF_DCMotor Motor4(4);
void setup()
{
BTSerial.begin(9600);
}
void loop()
{
if (BTSerial.available() > 0) {
char ch = BTSerial.read();
BTSerial.print("Received: ");
BTSerial.println(ch);
if (ch == 'C') {
Motor1.setSpeed(255);
Motor1.run(BACKWARD);
Motor2.setSpeed(255);
Motor2.run(BACKWARD);
Motor3.setSpeed(255);
Motor3.run(BACKWARD);
Motor4.setSpeed(255);
Motor4.run(BACKWARD);
}
if (ch == 'D') {
Motor1.setSpeed(0);
Motor1.run(BRAKE);
Motor2.setSpeed(0);
Motor2.run(BRAKE);
Motor3.setSpeed(0);
Motor3.run(BRAKE);
Motor4.setSpeed(0);
Motor4.run(BRAKE);
if (ch == 'E') {
digitalWrite(9, HIGH);
}
if (ch == 'F') {
digitalWrite(9, LOW);
}
}
}
}
Почему это происходит и как я могу это исправить? Пожалуйста, помогите.
(для вложений) Я не подключался к моторам; они отлично работают при последовательном подключении к ноутбуку с измененным эскизом, но, видимо, не работают с командами Bluetooth. введите описание изображения здесь