|
求助!
使用了2个HC-05、2个Arduino uno、1和超声波
想实现: 从机检测距离,把距离传给主机
但是从Arduino的串口监视器来看,从机可以获得距离,但是主机收不到,如图。
参考了下面两个帖子
两个arduino通过HC-05通信数据乱码问题http://www.arduino.cn/forum.php? ... amp;highlight=HC-05
超声波测距+蓝牙传输+LCD1602应用教程http://www.geek-workshop.com/thread-3272-1-1.html
附上自己的程序: - //主机程序//
- #include <SoftwareSerial.h>
- SoftwareSerial BT(8, 9); // 接收, 传送,程序中8为RX需要接hc-05的TXD,9为TX,需要接hc-05的RX。
- byte val = 0;
- void setup() {
- Serial.begin(38400);
- Serial.println("BT is ready!");
- //HC-05默认,38400
- BT.begin(38400);
- }
- void loop() {
- if(Serial.available()) {
- val = Serial.read();
- BT.print(val);
- }
- if (BT.available() != 0)
- {
- val=BT.parseInt();
- Serial.println(val);
- }
- delay(50);
- }
复制代码
从机程序: - //从机程序//
- #include "SR04.h"
- #include <SoftwareSerial.h>
- SoftwareSerial BlueTooth(8, 9); //创建虚拟串口,Pin8 Rx,Pin9 Tx
- #define TRIG_PIN 2
- #define ECHO_PIN 3
- SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);
- void setup() {
- BlueTooth.begin(38400);
- Serial.begin(38400);
- }
- void loop() {
- int val;
- val = sr04.Distance();
- Serial.println(val);
- BlueTooth.println((byte)val);//通过蓝牙传出数据,注意此处必须要设置传出数据为byte,否则接受时会因ASIC变为乱码
- delay(1000);
- }
复制代码
此外,蓝牙的主从机已经配对好,波特率为:38400
向前用串口测试软件测试主从机是可以互相发送数据的的。
谢谢大家了!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|