Помогите 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);
}
@John Smith, 👍-1
Обсуждение1 ответ
Хорошо, во-первых, ВЫ правильно подключили тему? Потому что MPU использует шину i2c. Во-вторых, этот код из gitlab может вам помочь. https://gitlab.com/shuvashish/batikkrom.com/blob/master/MuttipleMPU/ MuttipleMPU.ino Проверь это . И используйте его
Вы написали этот код? Строки с оператором while следует удалить, а 0x00000000 не является байтом., @Jot
- Как подключить MPU9250 к NodeMCU с помощью SPI или I2C Slave?
- Изменение адреса I2C MPU-6050
- MPU6050 не выдает выход
- MPU-9250 IMU на SPI, внешнем датчике или магнитометре с использованием мастера I2C
- Использование MPU-6050 без I2C
- Почему Wire.write дважды?
- Сбой при записи данных MPU-6050 на SD-карту
- Мультиплексор Adafruit MPU-6050 и adafruit I2C
Запустите сканер i2c и сообщите нам, найдены ли два датчика. Почему вы запрашиваете 14 байтов, а затем используете только 6 байтов? Вы можете попробовать символ utf-8 ° вместо (char) 176., @Jot