Arduino:使用串口和软件串口与蓝牙模块

2024-02-15

我的目的是使用 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(使用前将#替换为@)

Arduino:使用串口和软件串口与蓝牙模块 的相关文章

随机推荐

  • 如何在 ggplot2::geom_step() 中将线居中,类似于 highcharter

    对于我的情节 我想要ggplot2 geom step 线对齐以我的点为中心 而不是向左对齐 In highcharter hc add series type line 有一个选项叫做step center 看我的jsfiddle htt
  • 如何使用Python在Windows中设置代理?

    如何获取当前 Windows 浏览器代理设置并将其设置为一个值 我知道我可以通过查看注册表来做到这一点Software Microsoft Windows CurrentVersion Internet Settings ProxyServ
  • 如何在动态情况下寻找最短路径

    几天前 有人问我 如果我们的环境中有一些代理 他们想要从源头到达目的地 我们如何才能找到所有代理的总最短路径 以便他们在执行过程中不会发生冲突走 问题的关键是所有智能体同时在环境中行走 可以通过无向加权图建模 并且我们不应该发生任何碰撞 我
  • 在 NSPredicate 中使用 NSDate

    是否有特定的方法来配置 NSPredicate 来比较日期 本质上我有一个 Photo 对象 它有一个 NSDate lastViewed 我想配置一个 NSPredicate 它将返回最近在指定时间段 通常是两天 之前查看过的所有照片对象
  • 当我尝试安装 @nuxtjs/firebase 时出现 NPM 错误

    我收到这个错误 我不理解 而且我真的不知道如何修复 我正在使用 Nuxt js 我想同时使用 firebase 但是当我尝试 firebase nuxtjs 时 org 并安装 nuxtjs firebase 我收到此错误 npm ERR
  • 如何修复“UIPopoverController 已弃用”警告?

    我正在使用这段代码 mediaLibraryPopover UIPopoverController alloc initWithContentViewController avc self mediaLibraryPopover prese
  • Highcharts 在某些缩放级别不显示数据

    我正在使用 Highcharts Highstock 绘制相当大量的数据 10 000 点 数据由 X 轴上的 Date 对象组成 Y 轴上浮动 格式如下 date 1 728 date 0 346 日期始终相隔 1 小时 并且数据中没有间
  • 处置 RestRequest RestSharp 对象?

    我正在使用 RestSharp 并创建 RestRequest 对象以将 FileData 发送到 API 但是在得到响应后 我想从本地计算机中删除该文件 但是当我尝试执行相同操作时 它给了我错误 文件正在被其他进程使用 我认为的原因是我无
  • 附件名称和文件扩展名在电子邮件 *.eml 中不起作用

    我想在以下位置创建电子邮件文件 eml格式为包含多个附件 附件已生成 且附件内容正确 但附件总是进来 dat格式和文件名为 ATT00001 ATT0002 等 目前我正在遵循中给出的解决方案这个计算器问题 https stackoverf
  • UIDocument 和 NSFileWrapper - 尽管增量更改,大文件仍需要很长时间才能保存

    我有一个UIDocument基于应用程序使用NSFileWrappers 来存储数据 主 文件包装器包含许多附加的目录文件包装器 每个包装器代表文档的不同页面 保存仅修改了一小部分页面的大型文档时 UIDocument在后台花费很长时间编写
  • BeautifulSoup - findAll 不在特定标签内

    因此 我试图找到一种方法来查找 BeautifulSoup 对象中具有某个标签但不在某个其他标签内的所有项目 例如 td class disabled first div class dayContainer p class day 29
  • 尝试将 pandas 数据框插入临时表

    我正在创建一个临时表并向其中插入一些数据 我广泛使用 pyodbc 来提取数据 但我不熟悉如何从 python 环境将数据写入 SQL 我在工作中这样做 所以我没有能力创建表 但我可以创建临时表和全局临时表 我的目的是将一个相对较小的数据帧
  • 如何在 Rust 2018 中为 crate 指定别名?

    我有一个箱子foo sys 在 Rust 2015 中我使用了extern crate foo sys as foo为了方便起见 但在 Rust 2018 中extern crate不再需要 我不想仅将它用于别名 掉落时extern cra
  • Tkinter 变量跟踪方法回调的参数是什么?

    Python 有 Tkinter 变量的类StringVar BooleanVar 等等这些都共享方法get set string and trace mode callback The callback函数作为第二个参数传递给trace
  • 如何使视频的宽度为100%或高度为100%

    我有同样的问题this https stackoverflow com questions 27328009 100 height or 100 width但我正在尝试这样做
  • 是否可以将单个文件从一个 SVN 存储库迁移到另一个存储库,同时保留历史记录?

    我在我的个人 SVN 存储库中启动了一个小应用程序 它引起了足够的兴趣 值得将开发转移到共享组存储库 可以将应用程序 仅单个文件 及其历史记录迁移到组存储库吗 查看 svnadmin dump svnadmin load 和 svndump
  • Saxon 与 Visual Studio 2010 - 有没有办法使用调试器?

    我们花费了越来越多的时间来应对 Microsoft XSLT 1 0 处理器的限制 我认为现在是开始使用 XSLT 2 0 的时候了 撒克逊似乎是一个不错的选择 问题是 Visual Studio 集成的 XSLT 调试器非常棒 没有人想停
  • NSString stringWithFormat 使用制表符而不是空格

    您可以看到我在字符串后添加了 40 个空格 但它从索引 0 开始 我可以用制表符 t 而不是空格 做同样的事情吗 NSString firstString NSString stringWithFormat stringToWrite st
  • QML 中的 if 语句

    对于 QT 和 QML 来说是全新的 我试图根据两个属性双精度之间的关系设置矩形的颜色callValue and handRaiseXBB 但我收到错误 意外的标记如果 and 需要一个限定名称 id 谁能告诉我我做错了什么 import
  • Arduino:使用串口和软件串口与蓝牙模块

    我的目的是使用 Arduino 通过 HC 05 蓝牙模块在 PC 和 Android 设备之间建立通信 我使用 PC 和 Arduino 串行监视器 之间的 USB 通信以及 SoftwareSerial 来连接到 HC 05 我的问题是