Arduino 如何设置MPU6500工作并读取加速计?
我正在为一个我感兴趣的小项目工作,我一直在使用Arduino获取MPU6500的加速计数据。然而,我的代码就是不起作用。我从wire读取的每个寄存器都是-1。有人知道如何让它正常工作吗 这是我的密码。我正在使用Arduino Uno btwArduino 如何设置MPU6500工作并读取加速计?,arduino,hardware,Arduino,Hardware,我正在为一个我感兴趣的小项目工作,我一直在使用Arduino获取MPU6500的加速计数据。然而,我的代码就是不起作用。我从wire读取的每个寄存器都是-1。有人知道如何让它正常工作吗 这是我的密码。我正在使用Arduino Uno btw #包括 常量int MPU_addr=0x68;//MPU-6050的I2C地址 //其中一些板在AD0处有一个下拉电阻器(地址=0x68),其他板有一个上拉电阻器(地址=0x69)。 int16_t AcX,AcY,AcZ; 浮动时间; 无效设置(){ W
#包括
常量int MPU_addr=0x68;//MPU-6050的I2C地址
//其中一些板在AD0处有一个下拉电阻器(地址=0x68),其他板有一个上拉电阻器(地址=0x69)。
int16_t AcX,AcY,AcZ;
浮动时间;
无效设置(){
Wire.begin();
导线开始传输(MPU地址);
Wire.write(0x6B);//压水堆管理1寄存器
Wire.write(0);//设置为零(唤醒MPU-6050)
//或者一个,我不太确定
延迟(100);
线写入(0x68);
连线写入(0);
延迟(100);
线端传输(真);
序列号开始(115200);
时间=微秒();
}
void循环(){
导线开始传输(MPU地址);
Wire.write(0x3B);//从寄存器0x3B(ACCEL_XOUT_H)开始
线端传输(假);
requestFrom(MPU_addr,6,true);//请求总共6个寄存器
AcX=Wire.read()#包含
无效设置()
{
Wire.begin();
Wire.setClock(400000UL);//将I2C频率设置为400kHz
导线开始传输(mpu地址);
线写入(0x6B);
Wire.write(0);//唤醒mpu6050
线端传输(真);
Serial.begin(9600);
}
void loop(){
}
双陀螺
{
导线开始传输(mpu地址);
线写入(0x43);
线端传输(假);
请求来源(mpu地址,2);
双GyX=Wire.read()我使用了你的代码并在循环中添加了Serial.print Gyx,AccY,AccZ,但是我仍然只得到Gyx,AccY,AccZ=-1。你知道为什么会发生这种情况吗?可能是I2C或MPU6500模块的问题吗?你的管脚正确吗?因为我使用了这段代码,很好,这是一个例子:我发现了问题。管脚是正确的位置。但是他们没有很好地连接,一旦我握住它并使连接良好,它现在工作得很好。谢谢!
#include<Wire.h>
void setup()
{
Wire.begin();
Wire.setClock(400000UL); // Set I2C frequency to 400kHz
Wire.beginTransmission(mpu_addr);
Wire.write(0x6B);
Wire.write(0); // wake up the mpu6050
Wire.endTransmission(true);
Serial.begin(9600);
}
void loop() {
}
double Gyro_X()
{
Wire.beginTransmission(mpu_addr);
Wire.write(0x43);
Wire.endTransmission(false);
Wire.requestFrom(mpu_addr,2);
double GyX=Wire.read()<<8|Wire.read();
Wire.endTransmission(true);
return GyX;
}
double Acc_Y()
{
Wire.beginTransmission(mpu_addr);
Wire.write(0x3D);
Wire.endTransmission(false);
Wire.requestFrom(mpu_addr,2);
double AccY=Wire.read()<<8|Wire.read();
Wire.endTransmission(true);
return AccY;
}
double Acc_Z()
{
Wire.beginTransmission(mpu_addr);
Wire.write(0x3F);
Wire.endTransmission(false);
Wire.requestFrom(mpu_addr,2);
double AccZ=Wire.read()<<8|Wire.read();
Wire.endTransmission(true);
return AccZ;
}