Acces method to get and set actives offsets

void MPU6050::getActiveOffsets(int16_t Data[6]);
void MPU6050::setActiveOffsets(int16_t offsets[6]);
This commit is contained in:
net234
2021-01-29 21:22:28 +01:00
parent 16bad5100b
commit 3f2d339eac
2 changed files with 25 additions and 1 deletions

View File

@@ -3327,4 +3327,27 @@ void MPU6050::PrintActiveOffsets() {
printfloatx("", Data[0], 5, 0, ", ");
printfloatx("", Data[1], 5, 0, ", ");
printfloatx("", Data[2], 5, 0, "\n");
}
void MPU6050::getActiveOffsets(int16_t Data[6]) {
uint8_t AOffsetRegister = (getDeviceID() < 0x38 ) ? MPU6050_RA_XA_OFFS_H : 0x77;
// A_OFFSET_H_READ_A_OFFS(Data);
if (AOffsetRegister == 0x06) I2Cdev::readWords(devAddr, AOffsetRegister, 3, (uint16_t *)Data);
else {
I2Cdev::readWords(devAddr, AOffsetRegister, 1, (uint16_t *)Data);
I2Cdev::readWords(devAddr, AOffsetRegister + 3, 1, (uint16_t *)Data + 1);
I2Cdev::readWords(devAddr, AOffsetRegister + 6, 1, (uint16_t *)Data + 2);
}
// XG_OFFSET_H_READ_OFFS_USR(Data);
I2Cdev::readWords(devAddr, 0x13, 3, (uint16_t *)Data + 3);
}
void MPU6050::setActiveOffsets(int16_t offsets[6]) {
this->setXAccelOffset(offsets[0]);
this->setYAccelOffset(offsets[1]);
this->setZAccelOffset(offsets[2]);
this->setXGyroOffset(offsets[3]);
this->setYGyroOffset(offsets[4]);
this->setZGyroOffset(offsets[5]);
}

View File

@@ -827,7 +827,8 @@ class MPU6050 {
void CalibrateAccel(uint8_t Loops = 15);// Fine tune after setting offsets with less Loops.
void PID(uint8_t ReadAddress, float kP,float kI, uint8_t Loops); // Does the math
void PrintActiveOffsets(); // See the results of the Calibration
void getActiveOffsets(int16_t offsets[6]); // Get the results of the Calibration
void setActiveOffsets(int16_t offsets[6]); // Set offsets
// special methods for MotionApps 2.0 implementation