女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>電子元器件>傳感器>

函數 - mpu6050六軸傳感器模塊驅動程序源代碼分享

2017年12月11日 14:26 網絡整理 作者: 用戶評論(0

  res=dmp_enable_feature(DMP_FEATURE_6X_LP_QUAT|DMP_FEATURE_TAP

  |DMP_FEATURE_ANDROID_ORIENT|DMP_FEATURE_SEND_RAW_ACCEL

  |DMP_FEATURE_SEND_CAL_GYRO|DMP_FEATURE_GYRO_CAL);

  //設置dmp功能

  if(res)return6;

  res=dmp_set_fifo_rate(DEFAULT_MPU_HZ);//設置DMP輸出速率(最大200Hz)

  if(res)return7;

  res=run_self_test();//自檢

  if(res)return8;

  res=mpu_set_dmp_state(1);//使能DMP

  if(res)return9;

  }

  return0;

  }

  此函數首先通過IIC_Init(需外部提供)初始化與MPU6050連接的IIC接口,然后調用mpu_init函數,初始化MPU6050,之后就是設置DMP所用傳感器、FIFO、采樣率和加載固件等一系列操作,在所有操作都正常之后,最后通過mpu_set_dmp_state(1)使能DMP功能,在使能成功以后,我們便可以通過mpu_dmp_get_data來讀取姿態解算后的數據了。

  mpu_dmp_get_data函數代碼如下:

  //得到dmp處理后的數據(注意,本函數需要比較多堆棧,局部變量有點多)

  //pitch:俯仰角精度:0.1°范圍:-90.0°《---》+90.0°

  //roll:橫滾角精度:0.1°范圍:-180.0°《---》+180.0°

  //yaw:航向角精度:0.1°范圍:-180.0°《---》+180.0°

  //返回值:0,正常

  //其他,失敗

  u8mpu_dmp_get_data(float*pitch,float*roll,float*yaw)

  {

  floatq0=1.0f,q1=0.0f,q2=0.0f,q3=0.0f;

  unsignedlongsensor_timestamp;

  shortgyro[3],accel[3],sensors;

  unsignedcharmore;

  longquat[4];

  if(dmp_read_fifo(gyro,accel,quat,&sensor_timestamp,&sensors,&more))return1;

  if(sensors&INV_WXYZ_QUAT)

  {

  q0=quat[0]/q30;//q30格式轉換為浮點數

  q1=quat[1]/q30;

  q2=quat[2]/q30;

  q3=quat[3]/q30;

  //計算得到俯仰角/橫滾角/航向角

  *pitch=asin(-2*q1*q3+2*q0*q2)*57.3;//pitch

  *roll=atan2(2*q2*q3+2*q0*q1,-2*q1*q1-2*q2*q2+1)*57.3;//roll

  *yaw=atan2(2*(q1*q2+q0*q3),q0*q0+q1*q1-q2*q2-q3*q3)*57.3;//yaw

  }elsereturn2;

  return0;

  }

  此函數用于得到DMP姿態解算后的俯仰角、橫滾角和航向角。不過本函數局部變量有點多,大家在使用的時候,如果死機,那么請設置堆棧大一點(在startup_stm32f10x_hd.s里面設置,默認是400)。這里就用到了我們前面介紹的四元數轉歐拉角公式,將dmp_read_fifo函數讀到的q30格式四元數轉換成歐拉角。

非常好我支持^.^

(254) 99.6%

不好我反對

(1) 0.40000000000001%

( 發表人:金巧 )

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?