gpt4 book ai didi

android - Arduino:使用串行和软件串行与蓝牙模块

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:00:21 26 4
gpt4 key购买 nike

我的目的是使用 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 重置-> 发送问候语,打开串口监视器-> 没有任何反应,串口监视器上写入的字符-> BT 上接收到的字符,BT 上写入的字符-> 接收到的字符在串行监视器上,串行监视器关闭-> 没有任何反应。

真正的行为是:Arduino 重置-> 发送问候语,打开串口监视器-> BT 上的 2 个问候语和 PC 上的 1 个(“晚安”),串口监视器上写的字符-> 什么都没有,BT 上写的字符-> 串口监视器接收到字符,串口监视器关闭-> 串口监视器接收到先前写入的字符 + Hello Word。

我该如何解决这个问题?

代码:

#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 端口上使用 super 终端,我可以双向发送消息。 Serial.println 语句会像它们应该的那样显示在 super 终端窗口中。

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

关于android - Arduino:使用串行和软件串行与蓝牙模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18376468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com