我的目的是使用 Arduino 通过 HC-05 蓝牙模块在 PC 和 Android 设备之间建立通信。
我使用 PC 和 Arduino(串行监视器)之间的 USB 通信以及 SoftwareSerial 来连接到 HC-05。
我的问题是,从 BT 到 PC 的通信工作正常,但在其他方式下却无法按预期工作。当从 PC 发送到 BT 时,只有当我关闭 PC 上的串行监视器或重置 Arduino 时,BT 设备才会收到所有发送的字符。
我已经排除了 BT 模块或 Android 应用程序的问题,因为如果在 Arduino 中我实现了“ECHO”代码(在 Android 中编写并在 Android 中发送),则一切正常。
下面发布的 Arduino 代码的预期行为是:Arduino 重置 -> 发送 Hello 字,串行监视器打开 -> 没有任何反应,在串行监视器上写入字符 -> 在 BT 上接收字符,在 BT 上写入字符 -> 在串行监视器上接收字符,串行监视器关闭->没有任何反应。
真实的行为是:Arduino重置->发送Hello字,串行监视器打开->BT上有2个Hello字,PC上有1个(“晚安”),串行监视器上写有字符->什么都没有,BT上写有字符->接收到字符在串行监视器上,串行监视器关闭 -> 收到串行监视器中先前写入的字符 + Hello Word。
我该如何解决这个问题?
Code:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
int a=0;
char c;
char d;
void setup() {
Serial.begin(9600);
Serial.println("Goodnight moon!");
mySerial.begin(9600);
mySerial.println("Hello, world?");
}
void loop() {
delay(10);
if (Serial.available()) {
c=Serial.read();
delay(10);
Serial.write(c);
}
delay(10);
if (mySerial.available()) {
d=mySerial.read();
delay(10);
mySerial.write(d);
}
}
这段代码适用于我在带有 HC-05 的 Arduino Mini Pro(应该与 UNO 相同)上工作。我将 HC-05 与我的笔记本电脑配对。使用与 HC-05 和 Arduino 串行控制台关联的 COM 端口上的超级终端,我可以双向发送消息。 Serial.println 语句按照应有的方式显示在超级终端窗口中。
#include <SoftwareSerial.h>
#define rxPin 8
#define txPin 7
SoftwareSerial mySerial(rxPin, txPin); // RX, TX
char myChar ;
void setup() {
Serial.begin(9600);
Serial.println("Goodnight moon!");
mySerial.begin(9600);
mySerial.println("Hello, world?");
}
void loop(){
while(mySerial.available()){
myChar = mySerial.read();
Serial.print(myChar);
}
while(Serial.available()){
myChar = Serial.read();
mySerial.print(myChar);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)