Problema dati sensore mpu9250

Buongiorno a tutti. Sono alle prese con un progetto nel quale devo includere un MPU9250. il sensore in mio possesso è l'MPU9265 e da quel che ho capito è uno sviluppo dell'MPU9250.

la libreria che sto utilizzando è la MPU9250_WE.h perché la MPU9250.h non riusciva ad inizializzare il sensore.

La libreria MPU9250_WE invece mi da un errore di inizializzazione del sensore ma non bloccando il codice in caso di inizializzazione fallita inizia a darmi dei dati ma non so se siano corretti.

CODICE INIZIALIZZAZIONE SENSORE MPU9265:

void setup() {

  Serial.begin(115200);
  Wire.begin();

  if(!mpu.init()){
    Serial.println("INIZIALIZZAZIONE MPU FALLITA");
    //while(1);
    
  }else{
    Serial.println("INIZIALIZZAZIONE COMPLETATA CON SUCCESSO");
  }

  if(!mpu.initMagnetometer()){
    Serial.println("INIZIALIZZAZIONE MAGNETOMETRO FALLITA");
    //while(1);
    
  }else{
    Serial.print("INIT MAGNETOMETRO COMPLETATA");
    
  }

Qualcuno sa dirmi se sto utilizzando una libreria sbagliata o in cosa sto sbagliando?

Inoltre se i dati del giroscopio e le varie accelerazioni arrivano il magnetometro restituisce tutti 0.
La comunicazione che sto utilizzando è la I2C:
Alimentazione:3.3V (come da datasheet)
GND:GND
SDA:SDA
SCL:SCL

CODICE COMPLETO:

#include <MPU9250_WE.h>
#include <Wire.h>
#define mpu_indirizzo 0x69
MPU9250_WE mpu = MPU9250_WE(mpu_indirizzo);






void setup() {

  Serial.begin(115200);
  Wire.begin();

  if(!mpu.init()){
    Serial.println("INIZIALIZZAZIONE MPU FALLITA");
    //while(1);
    return 0;
    
  }else{
    Serial.println("INIZIALIZZAZIONE COMPLETATA CON SUCCESSO");
  }

  if(!mpu.initMagnetometer()){
    Serial.println("INIZIALIZZAZIONE MAGNETOMETRO FALLITA");
    //while(1);
    return 0;
    
  }else{
    Serial.print("INIT MAGNETOMETRO COMPLETATA");
    
  }

  Serial.print("CALIBRAZIONE NON MUOVERE IL SENSORE");
  delay(1000);
  mpu.autoOffsets();
  Serial.println("Calibrazione completata");
  
  mpu.enableGyrDLPF();
  mpu.setGyrDLPF(MPU9250_DLPF_6);

  mpu.setSampleRateDivider(5);
  mpu.setGyrRange(MPU9250_GYRO_RANGE_250);
  mpu.setAccRange(MPU9250_ACC_RANGE_2G);
  mpu.enableAccDLPF(true);
  mpu.setAccDLPF(MPU9250_DLPF_6);
  mpu.setMagOpMode(AK8963_CONT_MODE_100HZ);
  delay(200);
  

}

void loop() {
  
/*
 * xyzFloat >> variabile per la lettura di 3 valori x y z 
 * getGValues>> 
 */
  xyzFloat acc= mpu.getGValues(); // lettura accellerazioni 3 assi 
  xyzFloat giro= mpu.getGyrValues();
  xyzFloat mag= mpu.getMagValues();
  
  Serial.print("Accellerazioni (g)");
  Serial.println("x\t\ty\t\tz\t\t");
  
  Serial.print(acc.x);
  Serial.print("\t\t");
  Serial.print(acc.y);
  Serial.print("\t\t");
  Serial.println(acc.z);

  Serial.print("VALORI GIROSCOPIO");
  Serial.println("x\t\ty\t\tz\t\t");
  
  Serial.print(giro.x);
  Serial.print("\t\t");
  Serial.print(giro.y);
  Serial.print("\t\t");
  Serial.println(giro.z);

  Serial.print("VALORI MAGNETOMETRO");
  Serial.println("x\t\ty\t\tz\t\t");
  
  Serial.print(mag.x);
  Serial.print("\t\t");
  Serial.print(mag.y);
  Serial.print("\t\t");
  Serial.println(mag.z);

  delay(500);
  
  
 

  
  

}

:warning:
Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato.
Grazie.

A quanto detto da UKHeliBob aggiungo ...
... Evitate di utilizzare la traduzione automatica fatta dal browser ... vi impedisce di capire la lingua della sezione dove andate a scrivere.

Guglielmo

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.