串行只读在Blutooth连接读取中返回反向问号

时间:2018-02-21 14:24:35

标签: bluetooth arduino arduino-uno arduino-ide

我的Arduino蓝牙控制器车出现问题 我只得到反向问号。

我使用的是HC-05蓝牙模块。引脚连接如下:

  • HC 05 - > Arduino的
  • RX - > TX
  • TX - > RX
  • 5V - > 5V
  • GND - > GND

Ardunio代码:

#include <AFMotor.h>
AF_DCMotor right_motor(3, MOTOR12_8KHZ);
AF_DCMotor left_motor(4, MOTOR12_8KHZ);

String readString;

void setup() {
  Serial.begin(9600);
  right_motor.setSpeed(250);
  left_motor.setSpeed(250);
}

void loop() {
  while(Serial.available()){
    delay(50);
    char c=Serial.read();
    readString+=c;
  }
  if(readString.length()>0){
    Serial.println(readString);
    if (readString =="FORWARD"){
      right_motor.run (FORWARD);
      left_motor.run (FORWARD);
      delay(500);
    }
    if (readString =="BACKWARD"){
      right_motor.run (BACKWARD);
      left_motor.run (BACKWARD);
      delay(500);
    }
    if (readString =="LEFT"){
      right_motor.run (FORWARD);
      left_motor.run (BACKWARD);
      delay(500);
    }
    if (readString =="RIGHT"){
      right_motor.run (BACKWARD);
      left_motor.run (FORWARD);
      delay(500);
    }
    if (readString =="STOP"){
      right_motor.run (RELEASE);
      left_motor.run (RELEASE);
      delay(500);
    }

    readString="";
  }
}

串口监视器:

Serial monitor output

我在代码中尝试了很多类型的更改,但它们无法正常工作。

2 个答案:

答案 0 :(得分:0)

蓝牙模块和Arduino串行端口之间的波特率必须相同。您可以通过输入以下AT命令来检查蓝牙模块的波特率: app.UseWebSockets(); app.UseSignalR(routes => { routes.MapHub<FingerprintHub>("/Hub/FingerprintHub"); }); ,也可以使用以下AT命令进行更改:AT+UART?

此外,您不能使用AT+UART=desired baud rate, stop bit, parity bit,\r\n然后将输出与Serial.read()进行比较!而是使用"STRING"

答案 1 :(得分:0)

根据大多数文档,HC-05的默认波特率是9600,而AT命令模式的默认波特率是38400。试试:

Serial.begin(57600);

我有六个HC-05,它们全部出厂时默认设置为57600波特。

(我之所以发布此答案,部分原因是我花了数小时才重新发现它。)