-1

我正在尝试为我的自动驾驶汽车 IMU 连接 MPU 6050 模块和 HMC 5883L 模块。但是 Nano (A4, A5) 中只有一个 i2c 连接。当我运行 MPU 6050 的代码时,它会显示结果。代码在这里。电路图电路图

#include <MPU6050_tockn.h>
#include <Wire.h>

MPU6050 mpu6050(Wire);

void setup() {
 Serial.begin(9600);
 Wire.begin();
 mpu6050.begin();
 mpu6050.calcGyroOffsets(true);
}

void loop() {
mpu6050.update();
Serial.print("angleX : ");
Serial.print(mpu6050.getAngleX());
Serial.print("\tangleY : ");
Serial.print(mpu6050.getAngleY());
Serial.print("\tangleZ : ");
Serial.println(mpu6050.getAngleZ());
}

但是当我运行磁力计代码时,它没有给出数据。

#include <Wire.h>
#include <DFRobot_QMC5883.h>

DFRobot_QMC5883 compass;

void setup()
{
Serial.begin(115200);
while (!compass.begin())
{
Serial.println("Could not find a valid QMC5883 sensor, check wiring!");
  delay(500);
}

if(compass.isHMC()){
    Serial.println("Initialize HMC5883");
    compass.setRange(HMC5883L_RANGE_1_3GA);
    compass.setMeasurementMode(HMC5883L_CONTINOUS);
    compass.setDataRate(HMC5883L_DATARATE_15HZ);
    compass.setSamples(HMC5883L_SAMPLES_8);
}
  else if(compass.isQMC()){
    Serial.println("Initialize QMC5883");
    compass.setRange(QMC5883_RANGE_2GA);
    compass.setMeasurementMode(QMC5883_CONTINOUS); 
    compass.setDataRate(QMC5883_DATARATE_50HZ);
    compass.setSamples(QMC5883_SAMPLES_8);
   }
  }
void loop()
{
 Vector norm = compass.readNormalize();

 float heading = atan2(norm.YAxis, norm.XAxis);
 float declinationAngle = (4.0 + (26.0 / 60.0)) / (180 / PI);
 heading += declinationAngle;

 if (heading < 0){
 heading += 2 * PI;
 }

 if (heading > 2 * PI){
 heading -= 2 * PI;
 }

 // Convert to degrees
 float headingDegrees = heading * 180/M_PI; 

 // Output
 Serial.print(" Heading = ");
 Serial.print(heading);
 Serial.print(" Degress = ");
 Serial.print(headingDegrees);
 Serial.println();

 delay(100);
 }
4

1 回答 1

1

我认为你做对了。MPU6050 有一个从 I2C 总线,用于连接指南针。您已相应地连接了设置。

您需要正确配置 MPU,但它会在 Arduino 甚至不知道的情况下与指南针对话。您可以与 HMC 对话,但只能通过 MPU 使用特殊命令。设备扫描不会显示 HMC,因为它不能从 Arduino 直接看到。在此设置中,您不能使用此处显示的磁力计代码。您需要使用 MPU6050 绑定并将其配置为从属指南针(不过,我不知道是否有任何 Arduino MPU6050 库支持此功能。)

于 2022-01-29T13:27:29.700 回答