使用Arduino UNO和HC05进行通信的时候,会用到一个语句

SoftwareSerial BT(10, 11);

这是定义一个SoftwareSerial对象:BT,并初始化了RX和TX的引脚,这之后才能通过BT对象对蓝牙进行操作。

但当与HC05通信时的单片机变成MEGA的时候,事情就变得玄学了起来。

某位小伙伴彻夜的实验表明,这条语句似乎对MEGA并不会起什么作用…

经过一番查找,我在Arduino的库文件里找到了这几条语句:

// These serial port names are intended to allow libraries and architecture-neutral
// sketches to automatically default to the correct port name for a particular type
// of use.  For example, a GPS module would normally connect to SERIAL_PORT_HARDWARE_OPEN,
// the first hardware serial port whose RX/TX pins are not dedicated to another use.
//
// SERIAL_PORT_MONITOR        Port which normally prints to the Arduino Serial Monitor
//
// SERIAL_PORT_USBVIRTUAL     Port which is USB virtual serial
//
// SERIAL_PORT_LINUXBRIDGE    Port which connects to a Linux system via Bridge library
//
// SERIAL_PORT_HARDWARE       Hardware serial port, physical RX & TX pins.
//
// SERIAL_PORT_HARDWARE_OPEN  Hardware serial ports which are open for use.  Their RX & TX
//                            pins are NOT connected to anything by default.
#define SERIAL_PORT_MONITOR         Serial
#define SERIAL_PORT_HARDWARE        Serial
#define SERIAL_PORT_HARDWARE1       Serial1
#define SERIAL_PORT_HARDWARE2       Serial2
#define SERIAL_PORT_HARDWARE3       Serial3
#define SERIAL_PORT_HARDWARE_OPEN   Serial1
#define SERIAL_PORT_HARDWARE_OPEN1  Serial2
#define SERIAL_PORT_HARDWARE_OPEN2  Serial3

也就是说,MEGA自己定义了Serial,Serial1,Serial2,Serial3这些对象,如果直接把蓝牙的rxtx接在MEGA的第一组txrx上,然后直接调用Serial1对象,就可以实现通信,譬如这样:

#include <SoftwareSerial.h> // Pin10为RX,接HC05的TXD
// Pin11为TX,接HC05的RXD
//SoftwareSerial BT(14, 15); 这是没有用的
char val;void setup() {Serial.begin(9600); Serial.println("BT is ready!");Serial3.begin(9600);
}void loop() {if (Serial.available()) {val = Serial.read();Serial3.print(val);delay(20);}if (Serial3.available()) {val = Serial3.read();Serial.print(val);delay(20);}delay(20);
}

综上所述,使用MEGA通过蓝牙通信的时候,就不要自己去定义串口对象了,直接使用MEGA提供的Serial1,Serial2,Serial3就可以

Arduino MEGA2560与蓝牙的通信(玄学)问题相关推荐

  1. Arduino mega2560蓝牙遥控小车简介

    Arduino mega2560蓝牙遥控小车简介 小车一览 主要模块如下: 一.电源 (1)BOM表:18650电池两节(单节3.6v,6800mAh) 18650 电池盒(两节带开关) 二.电机驱动 ...

  2. Arduino(3) Mega2560和外部设备SPI通信

    前言 这篇文章主要讲Arduino串行通信里的SPI通信.SPI(Serial Peripheral Interface,串行外设接口)高速通信接口一般用在于对于数据量要求比较大的设备或者场景里,例如 ...

  3. 轻松易懂arduino低功耗BLE蓝牙通信

    今天我们介绍蓝牙通信的另一种方式--BLE(Bluetooth Low Energy,蓝牙低功耗).         什么是BLE         在<无线通信3:HC05/HC06经典蓝牙BT ...

  4. Arduino智能小车——蓝牙小车

    Arduino智能小车--蓝牙小车 Arduino智能小车系列教程时空门: Arduino智能小车--拼装篇 点击跳转 Arduino智能小车--测试篇 点击跳转 Arduino智能小车--调速篇 点 ...

  5. Arduino使用HM-10蓝牙模块向uniapp小程序推送数据采坑总结

    序言 序言不会写,怎么简单怎么来,主要讲蓝牙向手机app传递数据怎么爬坑 概括 Ble蓝牙和uniapp数据互传的玩法,一般都是以下几步 1.初始化蓝牙 uni.openBluetoothAdapte ...

  6. 关于Arduino Mega2560的最基本介绍

    Arduino Mega 2560是基于ATmega2560的主控开发板.Arduino Mega2560是采用USB接口的核心电路板.具有54路数字输入输出,适合需要大量IO接口的设计.处理器核心是 ...

  7. 【Arduino 和 HC-05 蓝牙模块完整教程】

    [Arduino 和 HC-05 蓝牙模块完整教程] 1. 概述 2. 电路原理图 3. Arduino 蓝牙通信示例源代码 4. 将智能手机连接到HC-05蓝牙模块和Arduino 5. 通过蓝牙通 ...

  8. wince下的蓝牙串口通信

    wince下的蓝牙串口通信(上) wince下的蓝牙串口通信(下)--客户端

  9. android:手机与BLE-CC41-A蓝牙模块通信

    原创地址:http://blog.csdn.net/bigtree_mfc/article/details/53783585 手机蓝牙的开启.搜索就不再多说,和手机之间的蓝牙通信一样. 需要注意的安卓 ...

最新文章

  1. 对一种自制乐器进行音高修正和音色分析
  2. 安装oracle并且小总结oracle sql
  3. [转]开发者需要了解的WebKit(mark)
  4. java中synchronized的用法详解
  5. 基于黄金分割的修正Powell算法
  6. understand软件使用教程
  7. 使用echarts时,鼠标首次移入屏幕会闪动,屏幕会出现滚动条
  8. SpringMVC 方法三种类型返回值总结,你用过几种?
  9. 二十一.激光、视觉和惯导LVIO-SLAM框架学习之相机与雷达外参标定(1)
  10. dedecms后台崩溃或者后台访问慢的解决方法
  11. 数据结构及算法总结(概述)
  12. java swing 窗口事件_Javaswing多类窗口怎么写按钮事件呢?
  13. 你的代码,“拯救”过多少人?
  14. java设计模式(五)--建造者模式(Builder)
  15. 6.程序员的自我修养---可执行文件的装载与进程
  16. 王通:网络营销人才必备的10种技能
  17. matlab矩阵四分位数,中位数,四分位数
  18. opencv用于医学图像分割
  19. alpha测试什么意思,和Beta测试有何区别?
  20. 学习了那么多SEO大神的教程,为什么你的网站还是没有排名呢?

热门文章

  1. 国际志愿者日 我们与爱同行
  2. matlab 如何使用mex
  3. 关于偶的专业-信息工程
  4. 外文翻译 《How we decide》多巴胺的预言 第二节
  5. 单灯闪烁c语言程序,51单片机,C语言编程,控制指示灯闪烁的频率
  6. Python基础语法 - 第3关 霍格沃茨来信 input()函数
  7. Firefox火狐浏览器web开发调试开启强制刷新缓存模式
  8. 平方在c语言程序中怎么表示什么意思,c语言中的平方是怎么表示的?
  9. RoboCup2d学习——WorldModel
  10. java jdk 1.8中lambda表达式常用方法