Header Ads

MPU3060で3軸の傾きを取り出す


Arduinoで加速度センサMPU3060を使う。前回はとりあえずMPU3060を繋いでみた。これらの値を実際の角度に変えたい。

接続は前回を参照。

#1:ブロック図


”先にやっておく”

  • 【head】#include "I2Cdev.h"
  • 【head】#include "MPU6050_6Axis_MotionApps20.h"
  • 【head】#include "Wire.h"
  • 【head】MPU6050 mpu;
  • 【head】bool dmpReady = false;uint8_t mpuIntStatus;uint8_t devStatus;uint16_t packetSize;uint16_t fifoCount;uint8_t fifoBuffer[64];Quaternion q;float ypr[3];VectorFloat gravity;volatile bool mpuInterrupt = false;void dmpDataReady() { mpuInterrupt = true;}
  • 【先にやっておく】mpu.initialize();devStatus = mpu.dmpInitialize();
  • 【先にやっておく】mpu.setXGyroOffset(220);mpu.setYGyroOffset(76);mpu.setZGyroOffset(-85);mpu.setZAccelOffset(1788);
  • 【先にやっておく】mpu.setDMPEnabled(true);attachInterrupt(0, dmpDataReady, RISING);mpuIntStatus = mpu.getIntStatus();dmpReady = true;packetSize = mpu.dmpGetFIFOPacketSize();
その後に
y,p,rの数を設定

”くりかえす”
  • 【ずっと】while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount();mpu.getFIFOBytes(fifoBuffer, packetSize);fifoCount -= packetSize;mpu.dmpGetQuaternion(&q, fifoBuffer);mpu.dmpGetGravity(&gravity, &q);mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);
  • 【ずっと】_ABVAR_1_y = ypr[0] * 180/M_PI;
  • 【ずっと】_ABVAR_2_p = ypr[1] * 180/M_PI;
  • 【ずっと】_ABVAR_3_r = ypr[2] * 180/M_PI;
あとは好きな数をシリアルモニタで出力

”コードの調整”
コードのserial.begin(9600);の9600を115200に変える。

シリアルモニタも115200に変える。

動作の様子






Powered by Blogger.