Arduino MEGA2560与蓝牙的通信(玄学)问题
使用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与蓝牙的通信(玄学)问题相关推荐
- Arduino mega2560蓝牙遥控小车简介
Arduino mega2560蓝牙遥控小车简介 小车一览 主要模块如下: 一.电源 (1)BOM表:18650电池两节(单节3.6v,6800mAh) 18650 电池盒(两节带开关) 二.电机驱动 ...
- Arduino(3) Mega2560和外部设备SPI通信
前言 这篇文章主要讲Arduino串行通信里的SPI通信.SPI(Serial Peripheral Interface,串行外设接口)高速通信接口一般用在于对于数据量要求比较大的设备或者场景里,例如 ...
- 轻松易懂arduino低功耗BLE蓝牙通信
今天我们介绍蓝牙通信的另一种方式--BLE(Bluetooth Low Energy,蓝牙低功耗). 什么是BLE 在<无线通信3:HC05/HC06经典蓝牙BT ...
- Arduino智能小车——蓝牙小车
Arduino智能小车--蓝牙小车 Arduino智能小车系列教程时空门: Arduino智能小车--拼装篇 点击跳转 Arduino智能小车--测试篇 点击跳转 Arduino智能小车--调速篇 点 ...
- Arduino使用HM-10蓝牙模块向uniapp小程序推送数据采坑总结
序言 序言不会写,怎么简单怎么来,主要讲蓝牙向手机app传递数据怎么爬坑 概括 Ble蓝牙和uniapp数据互传的玩法,一般都是以下几步 1.初始化蓝牙 uni.openBluetoothAdapte ...
- 关于Arduino Mega2560的最基本介绍
Arduino Mega 2560是基于ATmega2560的主控开发板.Arduino Mega2560是采用USB接口的核心电路板.具有54路数字输入输出,适合需要大量IO接口的设计.处理器核心是 ...
- 【Arduino 和 HC-05 蓝牙模块完整教程】
[Arduino 和 HC-05 蓝牙模块完整教程] 1. 概述 2. 电路原理图 3. Arduino 蓝牙通信示例源代码 4. 将智能手机连接到HC-05蓝牙模块和Arduino 5. 通过蓝牙通 ...
- wince下的蓝牙串口通信
wince下的蓝牙串口通信(上) wince下的蓝牙串口通信(下)--客户端
- android:手机与BLE-CC41-A蓝牙模块通信
原创地址:http://blog.csdn.net/bigtree_mfc/article/details/53783585 手机蓝牙的开启.搜索就不再多说,和手机之间的蓝牙通信一样. 需要注意的安卓 ...
最新文章
- 对一种自制乐器进行音高修正和音色分析
- 安装oracle并且小总结oracle sql
- [转]开发者需要了解的WebKit(mark)
- java中synchronized的用法详解
- 基于黄金分割的修正Powell算法
- understand软件使用教程
- 使用echarts时,鼠标首次移入屏幕会闪动,屏幕会出现滚动条
- SpringMVC 方法三种类型返回值总结,你用过几种?
- 二十一.激光、视觉和惯导LVIO-SLAM框架学习之相机与雷达外参标定(1)
- dedecms后台崩溃或者后台访问慢的解决方法
- 数据结构及算法总结(概述)
- java swing 窗口事件_Javaswing多类窗口怎么写按钮事件呢?
- 你的代码,“拯救”过多少人?
- java设计模式(五)--建造者模式(Builder)
- 6.程序员的自我修养---可执行文件的装载与进程
- 王通:网络营销人才必备的10种技能
- matlab矩阵四分位数,中位数,四分位数
- opencv用于医学图像分割
- alpha测试什么意思,和Beta测试有何区别?
- 学习了那么多SEO大神的教程,为什么你的网站还是没有排名呢?