天线|RF射频
直播中

武梨格

7年用户 230经验值
私信 关注
[问答]

mini板用nrf24l01发送MPU9250欧拉角时为什么角度不能变化?

mini板用nrf24l01发送MPU9250欧拉角时,为什么角度不能变化???新手使用了仿真但是具体还是找不出问题,求解???是程序结构错了嘛?
while(1)
    {
                        
                                                key=KEY_Scan(0);
                                        if(key==KEY0_PRES)
                                        {
                                                //mode=0;
                                                                                                        printf("NRF24L01 RX_Moden");
                                                                        //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("rnpitch2=%drn",(int)pitch2);
                                                                                        printf("roll2=%drn",(int)roll2);
                                                                                        printf("yaw2=%drn",(int)yaw2);
                                                                                       
                                                                                }else delay_us(100);           
                                                                                t++;
                                                                                if(t==10000)//大约1s钟改变一次状态
                                                                                {
                                                                                        t=0;
                                                                                        LED0=!LED0;
                                                                                }                                    
                                                                        }
                                                
                                        }else if(key==KEY1_PRES)
                                        {
                                                //mode=1;
                                                                                                        printf("NRF24L01 TX_Moden");
                                                                        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("俯仰角Pitch=%drn",(int)(pitch*100));
                                                                                                        printf("rn横滚角Roll=%drn",-(int)(roll*100));
                                                                                                 printf("航向角Yaw=%drnrn",-(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;        
                                                                                                        pitch2=tmp_buf[1]*256+tmp_buf[2];
                                                                                                        printf("rnpitch2=%drn",(int)pitch2);
                                                                                                }else {      
                                                                                                                                p=-p;
                                                                                                                                tmp_buf[0]=0;
                                                                                                                                tmp_buf[1]=p/256;
                                                                                                                                tmp_buf[2]=p%256;        
                                                                                                                                pitch2=-(tmp_buf[1]*256+tmp_buf[2]);
                                                                                                                        printf("rnpitch2=%drn",(int)pitch2);
                                                                                                                        }
                                                                                                        
                                                                                                                        
                                                                                                if(r>0)
                                                                                                {
                                                                                                tmp_buf[3]=1;
                                                                                                tmp_buf[4]=r/256;
                                                                                                tmp_buf[5]=r%256;        
                                                                                                        roll2=tmp_buf[4]*256+tmp_buf[5];
                                                                                                        printf("roll2=%drn",(int)roll2);
                                                                                                }else {   
                                                                                                                                r=-r;
                                                                                                                                tmp_buf[3]=0;
                                                                                                                                tmp_buf[4]=r/256;
                                                                                                                                tmp_buf[5]=r%256;        
                                                                                                                                        roll2=-(tmp_buf[4]*256+tmp_buf[5]);
                                                                                                                         printf("roll2=%drn",(int)roll2);
                                                                                                                        }
                                                                                                
                                                                                                                        
                                                                                                if(y>0)
                                                                                                {
                                                                                                tmp_buf[6]=1;
                                                                                                tmp_buf[7]=y/256;
                                                                                                tmp_buf[8]=y%256;        
                                                                                                yaw2=tmp_buf[7]*256+tmp_buf[8];
                                                                                                 printf("yaw2=%drn",(int)yaw2);
                                                                                                }else {   
                                                                                                                                y=-y;
                                                                                                                                tmp_buf[6]=0;
                                                                                                                                tmp_buf[7]=y/256;
                                                                                                                                tmp_buf[8]=y%256;        
                                                                                                                 yaw2=-(tmp_buf[7]*256+tmp_buf[8]);
                                                                                                                 printf("yaw2=%drn",(int)yaw2);
                                                                                                                        }
                                                                        
                                                                                delay_ms(300);                                    
                                                                                       
                                                                                }else printf("Send Failedn");               
                                                                                
                                                                                LED0=!LED0;
                                                                                delay_ms(300);                                    
                                                                        }
                        
                                        }
                                        t++;
                                        if(t==100)
                                        {
                                                printf("KEY0:RX_Mode  KEY1:TX_Moden");
                                                
                                                        delay_ms(1000);
                                        }
                                                
                                        if(t==200)
                                        {        
                                                
                                                t=0;
                                        }
                                        delay_ms(5);        
                        
                                       
                }

验证2 - 副本 - 副本.zip (5.26 MB )

回帖(2)

高文利

2020-6-17 16:33:16
我们有6050的例程,可以参考下。
举报

罗兰君

2020-6-17 16:47:31
就是对照6050和无线的程序写出来的,放在匿名上位机就没有错误
举报

更多回帖

发帖
×
20
完善资料,
赚取积分