HC-05 отправляет бесконечные печатные сообщения и не отвечает - PullRequest
0 голосов
/ 06 мая 2018

Я делаю радиоуправляемую машину для своего школьного проекта, и я впервые пишу коды.

Я использую 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. введите описание изображения здесь

1 Ответ

0 голосов
/ 23 мая 2018
#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()
{
   while (BTSerial.available()) {
       delay(10)  //delay for giving time to the read buffer
       char ch = BTSerial.read();
       BTSerial.print("Received: ");
       BTSerial.println(ch);
       switch(ch){
       case '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);
                break;
       case '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);
                break;
       case 'E':
               digitalWrite(9, HIGH);
               break;
       case 'F':
               digitalWrite(9, LOW);
               break;
     }
     break;
  }
}

Попробуйте и скажите, работает ли это соответственно или нет.

Кроме того, вы можете использовать Android-приложение, доступное в PlayStore для управления. Я думаю, вам понравится это приложение, которое получило отличную возможность для создания разных проектов.

https://play.google.com/store/apps/details?id=invootech.ashish.anduino_connect

...