OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3916|回复: 6

NRF24L01传输MPU9250数据,为什么传感器的数值不能在原来的变化范围改变了,数值基本不能变

[复制链接]

31

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2018-5-3
在线时间
69 小时
发表于 2018-6-5 08:21:41 | 显示全部楼层 |阅读模式
1金钱
while(1)
    {
                       
                                                key=KEY_Scan(0);
                                        if(key==KEY0_PRES)
                                        {
                                                mode=0;   
                                                break;
                                        }else if(key==KEY1_PRES)
                                        {
                                                mode=1;
                                                break;
                                        }
                                        t++;
                                        if(t==100)
                                        {
                                                printf("KEY0:RX_Mode  KEY1:TX_Mode\n");
                                               
                                                        delay_ms(1000);
                                        }
                                               
                                        if(t==200)
                                        {       
                                               
                                                t=0;
                                        }
                                        delay_ms(5);       
                       
                                       
                }
                if(mode==0)//RX模式
        {
                printf("NRF24L01 RX_Mode\n");
                //printf("Received DATA:\n");
                NRF24L01_RX_Mode();                  
                while(1)
                {                                                                                   
                        if(NRF24L01_RxPacket(tmp_buf)==0)//一旦接收到信息,则显示出来.
                        {
                                //tmp_buf[32]=0;//加入字符串结束符
                               
                                if(tmp_buf[0]==0)
                                {
                                pitch2=-(tmp_buf[1]*256+tmp_buf[2]);
                                }else pitch2=tmp_buf[1]*256+tmp_buf[2];
                               
                               
                                if(tmp_buf[3]==0)
                                {
                                roll2=-(tmp_buf[4]*256+tmp_buf[5]);
                                }else roll2=-tmp_buf[4]*256+tmp_buf[5];
                               
                               
                                if(tmp_buf[6]==0)
                                {
                                yaw2=-(tmp_buf[7]*256+tmp_buf[8]);
                                }else yaw2=-tmp_buf[7]*256+tmp_buf[8];
                               
                                printf("Received DATA:\n");
                                printf("\r\npitch2=%d\r\n",(int)pitch2);
                                printf("roll2=%d\r\n",(int)roll2);
                                printf("yaw2=%d\r\n",(int)yaw2);
                               
                        }else delay_us(100);          
                        t++;
                        if(t==10000)//大约1s钟改变一次状态
                        {
                                t=0;
                                LED0=!LED0;
                        }                                     
                };       
        }else//TX模式
        {                                                            
                printf("NRF24L01 TX_Mode\n");
                NRF24L01_TX_Mode();
                while(1)
                {                                                              
                        if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
                        {
                               
                                if(mpu_mpl_get_data(&pitch,&roll,&yaw)==0)
                                        {
                                                        MPU_Get_Accelerometer(&aacx,&aacy,&aacz);        //得到加速度传感器数据
                                                        MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz);        //得到陀螺仪数据
                                                printf("\r\n横滚角Roll=%d\r\n",-(int)(roll*100));
                                     printf("俯仰角Pitch=%d\r\n",(int)(pitch*100));
                                     printf("航向角Yaw=%d\r\n\r\n",-(int)(yaw*10));
                                                r=-(int)(roll*100);
                                                p=(int)(pitch*100);
                                                y=-(int)(yaw*10);
                                                delay_ms(50);
                                        }
                                       
                                printf("Sended DATA:");
               
                                                                if(p>0)//pitch:俯仰角.单位 0.01度。-9000 - 9000 对应 -90.00 -> 90.00 度
                                                                {
                                                                tmp_buf[0]=1;
                                                                tmp_buf[1]=p/256;
                                                                tmp_buf[2]=p%256;       
                                                                }else {      
                                                                              p=-p;
                                                                        tmp_buf[0]=0;
                                                                        tmp_buf[1]=p/256;
                                                                        tmp_buf[2]=p%256;       
                                                                       }
                                                                       
                                                                                       
                                                                if(r>0)
                                                                {
                                                                tmp_buf[3]=1;
                                                                tmp_buf[4]=r/256;
                                                                tmp_buf[5]=r%256;       
                                                                }else {   
                                                                              r=-r;
                                                                        tmp_buf[3]=0;
                                                                        tmp_buf[4]=r/256;
                                                                        tmp_buf[5]=r%256;       
                                                                       }
                                                               
                                                                                       
                                                                if(y>0)
                                                                {
                                                                tmp_buf[6]=1;
                                                                tmp_buf[7]=y/256;
                                                                tmp_buf[8]=y%256;       
                                                                        //printf("yaw2=%d\r\n",(int)yaw2);
                                                                }else {   
                                                                              y=-y;
                                                                        tmp_buf[6]=0;
                                                                        tmp_buf[7]=y/256;
                                                                        tmp_buf[8]=y%256;       
                                                                       }
                                                               
                                       
                               
                        }else printf("Send Failed\n");               
                       
                        LED0=!LED0;
                        delay_ms(300);                                    
                };
        }

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

2165

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10652
金钱
10652
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-6-5 10:25:16 | 显示全部楼层
你还是好好自己检查吧,大眼一看全是错误
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-6-6 01:47:12 | 显示全部楼层
学会仿真找问题
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

31

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2018-5-3
在线时间
69 小时
 楼主| 发表于 2018-6-6 09:07:02 | 显示全部楼层

用什么仿真  能细说一下吗
回复

使用道具 举报

31

主题

1951

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4416
金钱
4416
注册时间
2018-5-11
在线时间
922 小时
发表于 2018-6-6 13:44:04 来自手机 | 显示全部楼层
17862984059 发表于 2018-6-6 09:07
用什么仿真  能细说一下吗

用JTAG或者ST Link
回复

使用道具 举报

31

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2018-5-3
在线时间
69 小时
 楼主| 发表于 2018-6-6 14:16:41 | 显示全部楼层

有点懂得  但是不知道问题出现在哪里。。。。。。。。。。。。
回复

使用道具 举报

31

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2018-5-3
在线时间
69 小时
 楼主| 发表于 2018-6-6 14:17:51 | 显示全部楼层
275891381 发表于 2018-6-5 10:25
你还是好好自己检查吧,大眼一看全是错误

初学者 真的有些不懂  直接是在NRF24L01例程改的   格式都是参照的啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 22:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表