Помогите Arduino добавить второй датчик mpu 6050 в мой рабочий код

Справочная информация: в настоящее время у меня есть этот код Arduino, который использует один датчик mpu 6050 для получения углов в направлениях x, y и z, а затем красиво отображает их для пользователя. Код можно найти здесь базовый код MPU 6050

Проблема: Я хочу добавить в свой проект второй процессор mpu 6050 и усреднить значения двух процессоров mpu 6050.

Я знаю, как физически подключить второй датчик к проекту, но не знаю, как выполнить кодирование. Код у меня ниже. Любая помощь приветствуется. Это очень интересный инструмент.

#include<Wire.h>
const int MPU_addr=0x68;
int16_t axis_X,axis_Y,axis_Z;
int minVal=265;
int maxVal=402;
double x;
double y;
double z;

void setup(){
  Wire.begin();
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x6B);
  Wire.write(0);
  Wire.endTransmission(true);
  Serial.begin(9600);
}
void loop(){
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x3B);
  Wire.endTransmission(false);
  Wire.requestFrom(MPU_addr,14,true);
  axis_X=Wire.read()<<8|Wire.read();
  axis_Y=Wire.read()<<8|Wire.read();
  axis_Z=Wire.read()<<8|Wire.read();
    int xAng = map(axis_X,minVal,maxVal,-90,90);
    int yAng = map(axis_Y,minVal,maxVal,-90,90);
    int zAng = map(axis_Z,minVal,maxVal,-90,90);
       x= RAD_TO_DEG * (atan2(-yAng, -zAng)+PI);
       y= RAD_TO_DEG * (atan2(-xAng, -zAng)+PI);
       z= RAD_TO_DEG * (atan2(-yAng, -xAng)+PI);
     Serial.print("Angle of inclination in X axis = ");
     Serial.print(x);
     Serial.println((char)176);
     Serial.print("Angle of inclination in Y axis= ");
     Serial.print(y);
     Serial.println((char)176);
     Serial.print("Angle of inclination in Z axis= ");
     Serial.print(z);
     Serial.println((char)176);
     Serial.println("-------------------------------------------");
     delay(1000);
}

, 👍-1

Обсуждение

Запустите сканер i2c и сообщите нам, найдены ли два датчика. Почему вы запрашиваете 14 байтов, а затем используете только 6 байтов? Вы можете попробовать символ utf-8 ° вместо (char) 176., @Jot


1 ответ


1

Хорошо, во-первых, ВЫ правильно подключили тему? Потому что MPU использует шину i2c. Во-вторых, этот код из gitlab может вам помочь. https://gitlab.com/shuvashish/batikkrom.com/blob/master/MuttipleMPU/ MuttipleMPU.ino Проверь это . И используйте его

,

Вы написали этот код? Строки с оператором while следует удалить, а 0x00000000 не является байтом., @Jot