【发布时间】:2018-03-10 22:15:50
【问题描述】:
我有一个问题已经解决了一段时间。我有一个 Arduino Uno 板和一个带有 TTL 输出的 HC-05 蓝牙收发器。
连接如下:
RX (HC_05) --> TX (Arduino UNO)
TX (HC_05) --> RX (Arduino UNO)
GND (HC-05) --> GND (Arduino UNO)
+5V (HC-05) --> +5V (Arduino UNO)
我有以下 Arduino 代码:
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(10, 11); // RX | TX
void setup()
{
Serial.begin(9600);
BTSerial.begin(38400); // HC-05 default speed in AT command more
pinMode(9, OUTPUT); // this pin will pull the HC-05 pin 34 (key pin) HIGH to switch module to AT mode
pinMode(10, INPUT);
pinMode(11, OUTPUT);
digitalWrite(9, HIGH);
Serial.println("Enter AT commands:");
BTSerial.println("Welcome to ARBA-Beat");
}
void loop()
{
// Keep reading from HC-05 and send to Arduino Serial Monitor
if (BTSerial.available()) {
Serial.println(BTSerial.read());
BTSerial.write(BTSerial.read());
BTSerial.flush();
}
}
我通过蓝牙终端安卓应用连接到蓝牙模块。一切正常(甚至蓝牙模块上的灯)。但是当我将一个字符从手机发送到 Arduino 时,我得到以下输出:
文本发送到蓝牙模块 - a
请帮忙
谢谢
【问题讨论】:
-
您在不同的函数中调用了两次
BTSerial.read(),这可能意味着两个值正在从队列中取出。在回显到终端/使用该值做某事之前尝试将其存储在一个变量中。 -
@MorrisonChang 我尝试了你所说的一切,现在我得到了盒子形状的值
-
我建议获取该值并将其转换为十六进制/二进制并将其发送到您正在使用的任何调试/日志会话,以查看您是否真的得到了您发送的值或有其他事情发生(额外字符/大小端问题/crlf 问题)。如果您正在学习教程 - 您可能想要链接到它并指出哪个步骤失败了。
标签: android terminal bluetooth arduino arduino-uno