跪求大神,姿态遥控,为什么和手机蓝牙发送的命令一样,小车却没有反应?
本人做了一个基于MPU6050的姿态遥控器,通过HC05与小车HC06相连,以取代手机蓝牙遥控,通过串口助手读取 HC06接收的数据和手机蓝牙发送的一模一样,为什么手机可以控制而我自己做的却没有反应?下面贴上代码,自己写的遥控程序:
#include <Wire.h>
int YPR;
int a=0,b=0,c=0,d=0,f=0;
unsigned char Re_buf,counter=0;
unsigned char sign=0;
void setup()
{ Serial1.begin(115200);
delay(2000);
Serial1.write(0XA5);
Serial1.write(0X52); //初始化GY25,连续输出模式
// set the data rate for the NewSoftSerial port
Serial.begin(9600);//
}
void loop() // run over and over again
{
if(sign)
{
sign=0;
if(Re_buf==0xAA && Re_buf==0x55) //检查帧头,帧尾
{
YPR=(Re_buf<<8|Re_buf)/100; //合成数据,去掉小数点后2位
YPR=(Re_buf<<8|Re_buf)/100;
YPR=(Re_buf<<8|Re_buf)/100;
}
}
if(YPR<80&&YPR>30&&abs(YPR)<30&&c==0)
{
Serial.write('O');
Serial.write('N');
Serial.write('C');
a=0;b=0;c=1;d=0;f=0;
}
else if(YPR>-80&&YPR<-30&&abs(YPR)<30&&d==0)
{
Serial.write('O');
Serial.write('N');
Serial.write('D');
a=0;b=0;c=0;d=1;f=0;
}
elseif(YPR>-80&&YPR<-30&&abs(YPR)<30&&a==0)
{
Serial.write('O');
Serial.write('N');
Serial.write('A');
a=1;b=0;c=0;d=0;f=0;
}
else if(YPR>30&&YPR<80&&abs(YPR)<30&&b==0)
{
Serial.write('O');
Serial.write('N');
Serial.write('B');
a=0;b=1;c=0;d=0;f=0;
}
else
{
if(abs(YPR)<30&&abs(YPR)<30&&f==0)
{
Serial.write('O');
Serial.write('N');
Serial.write('F');
a=0;
b=0;
c=0;
d=0;
f=1;
}
}
}
void serialEvent1() {
while (Serial1.available()) {
Re_buf=(unsigned char)Serial1.read();
if(counter==0&&Re_buf!=0xAA) return; // 检查帧头
counter++;
if(counter==8) //接收到数据
{
counter=0; //重新赋值,准备下一帧数据的接收
sign=1;
}
}
}
a b c d f 是状态标识,表示如果已处于本状态,那么就置1,下个循环如果还处于此状态,就不需要再次输出了。
下面是小车的接收控制代码:
void kongzhi()
{
if(Serial1.available())
{
while (Serial1.available() > 0)//一直接收
{
buff=Serial1.read();//接收三个字节
delay(2);
}
i=0;//重新接收
if((buff=='O')&&(buff=='N'))//前进
{
switch(buff)
{
case up: qian(); break;
case down:hou();break;
case left:zuo();break;
case right: you();break;
case stop1: ting();break;
#define left 'C'
#define right 'D'
#define up 'A'
#define down 'B'
#define stop1 'F'
我就问个问题,HC05可以和HC06连接吗,你要考虑HC05有主从的问题 zjz5717 发表于 2016-6-10 20:10 static/image/common/back.gif
我就问个问题,HC05可以和HC06连接吗,你要考虑HC05有主从的问题
可以,HC05已经设置为主模式,我是用串口助手读的HC06上接收的数据,和手机遥控接收的是一样的,但是小车只对手机遥控的有反映 傻了哔哩C罗炮 发表于 2016-6-10 21:01 static/image/common/back.gif
可以,HC05已经设置为主模式,我是用串口助手读的HC06上接收的数据,和手机遥控接收的是一样的,但是小车 ...
这么说你的HC05是主从一体的?
如果说小车对于你手机发送的有相应的话,说明你的接收端程序没有问题 傻了哔哩C罗炮 发表于 2016-6-10 21:01 static/image/common/back.gif
可以,HC05已经设置为主模式,我是用串口助手读的HC06上接收的数据,和手机遥控接收的是一样的,但是小车 ...
这就说明你的发送端的代码有问题,你仔细看一下,Serial.write指令发出去的应该是ascii码,那边接收到的应该也是ascii码所以识别不了,而手机这边是按照文本发送的你的接收端就可以接受啊,你要不考虑试一下serial.print 傻了哔哩C罗炮 发表于 2016-6-10 21:01 static/image/common/back.gif
可以,HC05已经设置为主模式,我是用串口助手读的HC06上接收的数据,和手机遥控接收的是一样的,但是小车 ...
http://blog.csdn.net/avrmcu1/article/details/28182533 zjz5717 发表于 2016-6-10 21:54 static/image/common/back.gif
http://blog.csdn.net/avrmcu1/article/details/28182533
分析的很有道理,我一开始也在纠结print和write的问题,但是并没有效果,我再试试看吧,多谢!!! zjz5717 发表于 2016-6-10 21:53 static/image/common/back.gif
这就说明你的发送端的代码有问题,你仔细看一下,Serial.write指令发出去的应该是ascii码,那边接收到的应 ...
还是不行啊,是不是和报文有关系啊,手机蓝牙和蓝牙模块的不一样?可串口助手上的接收到的字符串是一模一样的。 傻了哔哩C罗炮 发表于 2016-6-11 09:16 static/image/common/back.gif
还是不行啊,是不是和报文有关系啊,手机蓝牙和蓝牙模块的不一样?可串口助手上的接收到的字符串是一模一 ...
我想问一下你做的遥控器为什么要用wire库 zjz5717 发表于 2016-6-11 13:04 static/image/common/back.gif
我想问一下你做的遥控器为什么要用wire库
没有用,忘删 傻了哔哩C罗炮 发表于 2016-6-11 18:49 static/image/common/back.gif
没有用,忘删
那你把串口助手连接到发射端,看看能不能正常工作 zjz5717 发表于 2016-6-11 19:11 static/image/common/back.gif
那你把串口助手连接到发射端,看看能不能正常工作
可以正常工作,连接收端的蓝牙到串口助手,接收到的命令两个发送端发送的都一样。。。
页:
[1]