[RESOLU] Mecha_QMC5883L : lire un seul axe?

Bonjour
Cette bibliothèque permet de récupérer les données x,y,z et a.
Sauf que je ne veux que x.

#include <Wire.h>
#include <MechaQMC5883.h>
#include <Servo.h>

Servo myservo;

MechaQMC5883 qmc;

void setup() {
  Wire.begin();
  Serial.begin(9600);
  qmc.init();
  myservo.attach(6);
  myservo.write(90);
}

void loop() {
  int x;
  qmc.read(&x);
  Serial.println(x);
  delay(100);
}

Ca me renvoie un message d'erreur:
no matching function for call to 'MechaQMC5883::read(int*)'

Est-ce à dire qu'il faut, comme dans l'exemple qmc.read(&x, &y, &z,&azimuth); récupérer l'ensemble des données (au moins x,y,z)? Du coup il faut au moins 3 int ...

Une idée?

Si tu lis la doc ici, tu vois qu'à minima, pour lire le capteur, il faut utiliser

qmc.read(&x,&y,&z);

La lecture de MechaQMC5883.h confirme qu'il n'y a pas de méthode avec moins d'arguments.

Tu dois pouvoir modifier ta version de la bibli en ajoutant dans le fichier cpp une fonction pour toi, genre :

void MechaQMC5883::readX(uint16_t* x){
  read(x,y,z);
}

Pourquoi ce prendre la tête, on est quand même assez rarement à 4 octets près. Si tu veux économiser les octets, tu peux très bien faire pointer y et z sur une seule et même variable.

Tu as raison, mais les koalas aiment bien compliquer les choses simples :slight_smile:

fdufnews:
Pourquoi ce prendre la tête, on est quand même assez rarement à 4 octets près. Si tu veux économiser les octets, tu peux très bien faire pointer y et z sur une seule et même variable.

Certes!
Mais je parie que le jour où je publie un code comme ça je vais me faire huer ^^
J'ai lu la bibliothèque et je pensais être passé à côté d'une subtilité
Bon alors ok!

Merci vous deux