Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 如何设置MPU6500工作并读取加速计?_Arduino_Hardware - Fatal编程技术网

Arduino 如何设置MPU6500工作并读取加速计?

Arduino 如何设置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

我正在为一个我感兴趣的小项目工作,我一直在使用Arduino获取MPU6500的加速计数据。然而,我的代码就是不起作用。我从wire读取的每个寄存器都是-1。有人知道如何让它正常工作吗

这是我的密码。我正在使用Arduino Uno btw

#包括
常量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;  
}