diff --git a/flix/imu.ino b/flix/imu.ino index 2cc84a2..bd00814 100644 --- a/flix/imu.ino +++ b/flix/imu.ino @@ -11,7 +11,7 @@ #include "util.h" IMU *imu; -int imuModel = -1; +int imuModel = -1; // 1 - MPU9250, 2 - ICM20948, 3 - MPU6050, 4 - ICM40609D int imuBus = 0; // 0 - SPI, 1 - I2C int imuSckPin = SCK, imuMisoPin = MISO, imuMosiPin = MOSI, imuCsPin = SS, imuIntPin = -1; int imuSdaPin = SDA, imuSclPin = SCL; @@ -29,15 +29,18 @@ LowPassFilter gyroBiasFilter(0.001); void setupIMU() { print("Setup IMU\n"); free(imu); + if (imuModel == 3) imuBus = 1; // MPU6050 is I2C only + if (imuBus == 0) { // SPI connection - SPI.begin(imuSckPin, imuMisoPin, imuMosiPin); // SPI connection + SPI.begin(imuSckPin, imuMisoPin, imuMosiPin); imu = IMU::create(imuModel, SPI, imuCsPin, imuIntPin); } else { // I2C connection Wire.setPins(imuSdaPin, imuSclPin); imu = IMU::create(imuModel, Wire, imuIntPin); } + imu->begin(); configureIMU(); }