###### tags: `Arduino` `MPU6050`
# MPU6050 Module
## code
```cpp=
#include <MPU6050.h>
#include <Wire.h>
int addr;
int AcX,AcY,AcZ;
int rx, ry, rz;
int min = 265, max = 402;
double x, y, z;
void MPU6050::begin(int add, int val){
addr = add;
Wire.begin();
Wire.beginTransmission(addr);
Wire.write(0x6B);
Wire.write(0);
Wire.endTransmission(true);
Wire.beginTransmission(addr);
Wire.write(0x1A);
Wire.write(val);
Wire.endTransmission(true);
}
void MPU6050::read(){
Wire.beginTransmission(addr);
Wire.write(0x3B);
Wire.endTransmission(false);
Wire.requestFrom(addr,8,true);
rx=Wire.read()<<8|Wire.read();
ry=Wire.read()<<8|Wire.read();
rz=Wire.read()<<8|Wire.read();
AcX = map(rx,min,max,-90,90); //設定分量在90~-90
AcY = map(ry,min,max,-90,90); //固定比例
AcZ = map(rz,min,max,-90,90);
x= RAD_TO_DEG * (atan2(-AcY, -AcZ)+PI); //取tan^-1 -> 角度
y= RAD_TO_DEG * (atan2(-AcX, -AcZ)+PI);
z= RAD_TO_DEG * (atan2(-AcY, -AcX)+PI);
if(x>180)x -= 360;
if(y>180)y -= 360;
if(z>180)z -= 360;
}
int MPU6050::Xaxis(){
return int(x);
}
int MPU6050::Yaxis(){
return int(y);
}
int MPU6050::Zaxis(){
return int(z);
}
int MPU6050::Xraw(){
return int(rx);
}
int MPU6050::Yraw(){
return int(ry);
}
int MPU6050::Zraw(){
return int(rz);
}
```
## libriary
[MPU6050](https://github.com/Harrysome/MPU6050)