Problema valori LSM303DLH

Ciao,
ho acquistato un LSM303DLH da montare su un’antenna satellitare , usando lo sketch incluso nella libreria per calibrarlo ottengo dei valori strani:

A: -400 592 16416 M: -3 -5 4
A: -272 592 16272 M: 0 5 0
A: -224 640 16512 M: -2 -5 6
A: -288 496 16512 M: 0 0 -4

Premetto che ieri facendo delle prove non dava questi valori, è possibile con qualche sketch l’ho incasinato? :-\

Grazie

>dan303: So che sei un vecchio utente del forum, ma ... NON riesco a trovare il tuo post di presentazione ... :confused:
... quindi, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie mille :slight_smile:

Guglielmo

Buonasera ho risolto cambiando il sensore, si era staccato un condensatore smd :confused:

Ho comunque un’altro problema, riesco a leggere correttamente la bussola ma per l’inclinazione mi restituisce dei valori strani, quando lo inclino a volte non cambia neanche valore.

#include <Wire.h>
#include <LSM303.h>

LSM303 compass;


void setup() {
  Serial.begin(9600);
  Wire.begin();
  compass.init();
  compass.enableDefault();
  compass.m_min = (LSM303::vector<int16_t>){-644, -674, -554};
  compass.m_max = (LSM303::vector<int16_t>){+670, +645, +617};

}

void loop() {
  
  compass.read();
  int bussola = compass.heading((LSM303::vector<int>){0,0,-1});
  Serial.print("bussola ");
  Serial.println(bussola);

  compass.read();
  int inclinazione = compass.heading((LSM303::vector<int>){0,-1,0});
  Serial.print("inclinazione ");
  
  Serial.println(inclinazione);
  Serial.println("  ");
  Serial.println("  ");
  delay(500);
}

Potrebbe essere che non è calibrato giusto? se si, come devo fare peer calibrarlo correttamente.

Grazie

Ho risolto…ora ho i gradi di inclinazione corretti.

#include <Wire.h>
#include <LSM303.h>

LSM303 compass;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  compass.init();
  compass.enableDefault();
  compass.m_min = (LSM303::vector<int16_t>){  -565,   -703,   -560};
  compass.m_max = (LSM303::vector<int16_t>){  +630,   +646,   +616};
}

void loop() {
  
  compass.read();
  int AZ = compass.heading((LSM303::vector<int>){0,1,0});
  Serial.println(String("AZ = ")+AZ+String("°"));

  compass.read();
  float Pi = 3.14159;
  int EL = (atan2(compass.a.y, compass.a.z) *180) / Pi;
  Serial.println(String("EL = ")+EL+String("°"));
  Serial.println("");
  delay(200);
}