HC-05发送无休止的println消息,但没有响应

时间:2018-05-06 13:10:58

标签: arduino-uno

我正在为我的学校项目制作遥控车,这是我第一次编写代码。

我正在使用Arduino Uno,L293D电机护罩和HC-05进行此项目。

我正在关注https://blog.miguelgrinberg.com/post/building-an-arduino-robot-part-ii-programming-the-arduino的指南,我无法通过蓝牙连接正确地与Arduino通信。

下面的草图一切正常:

#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手机打开和关闭LED,但如果我在草图中包含电机的定义,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);
       }
       }
   }
}

为什么会发生这种情况,我该如何解决?请帮忙。

(对于附件)我没有连接电机;他们可以通过串口连接到我的笔记本电脑上修改草图,但显然它不适用于蓝牙命令。这里的图像描述

1 个答案:

答案 0 :(得分:0)

#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;
  }
}

试试这个并告诉它是否正常工作。

此外,您可以使用Playstore上提供的Android应用程序进行控制。我想你会喜欢这个应用程序在制作不同的项目时非常有用。

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