本帖最后由 heroe1 于 2014-1-15 10:41 编辑
整合转载帖,来自博客园。
折腾了将近两天的蓝牙通信问题终于被我攻克了,之间走了不知道多少的弯路,这篇博文好好的写一下,一方面鼓励一下自己,另一方面希望对其它的同学有帮助,让大家少走点弯路。 真是太曲折了,我们的四轴马上就要到了,我这飞控板的设计还差的很多啊,计划昨天搞定蓝牙通信的模块,于是信誓旦旦的在计划书上写下了:今天搞定蓝牙通信模块。 于是找到了一个蓝牙模块,安卓手机,各种准备都齐了,那就开始吧。然后从网上找了个大神写的帖子,介绍的还算清楚吧,但是弄到最后我的不能通信,瞬时脑子大了。为什么? 不经意间发现我的Arduino板子和大神的不是一个型号的,大神的是UNO型号的,我的是升级版的LEONARDO。于是到网上查了查他们的区别,好像是说我的升级版把USB串口直接继承到了板子上,这样的好处是能用这块板子模拟鼠标或者键盘按键。这跟我的不成功有毛关系啊?于是又到处的找帖子差问题,之间不知道自己查了多少帖子,中文的、英文的看了好多。经过两天的了解终于有了点眉目。 问题终于水落石出: 通过差资料我理解到,其实我的板子的USB串口直接的集成到板子上带来好处的同时也带来了一个问题,就是他占用了板子原本的串口。也就说说串口被arduino~PC的通信占用。那么原本的串口的阵脚pin0、pin1就不能用来连接蓝牙模块了。(大神的UNO板子是这么连的,因为他的板子的USB不是集成的) 问题的解决办法就是在板子上用软件再虚拟出一个串口,串口的针脚用数字针脚(注意这种方法是软件虚拟的,pin0和pin1作为串口的针脚是内部硬件实现的)。但是怎么软件虚拟一个串口呢?于是我找到了一个库文件: NewSoftSerial看了看文章的介绍,好像是说这是一个能软件虚拟串口的库,还是SoftwareSerial这个库的升级版(尼玛,全是英文,没能理解太多)。我管你是哪个库的升级版,哪来先用了再说,先让我能通信了再说。于是下载,解压,放到Arduino的库文件目录中,开始在代码中引入#include <NewSoftSerial.h>。然后编译,提示错误:
说是从Arduino的1.0版本,我下载的这个库NewSoftSerial,已经被弄到了Arduino的核心中去了,把他当中的改进集成到了原本的库SoftwareSerial中。我去,这尼玛到底谁是谁的升级版啊。于是老老实实的用SoftwareSerial这个库。 其实网站的开头就说了这个问题,只是我没注意:http://arduiniana.org/libraries/newsoftserial/提升英文水平功在当代,利在千秋啊。 |