Arduino Forum

International => Français => Topic started by: kammo on Jun 18, 2018, 10:00 am

Title: [RESOLU] Mecha_QMC5883L : lire un seul axe?
Post by: kammo on Jun 18, 2018, 10:00 am
Bonjour
Cette bibliothèque permet de récupérer les données x,y,z et a.
Sauf que je ne veux que x.
Code: [Select]
#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?
Title: Re: Mecha_QMC5883L : lire un seul axe?
Post by: fdufnews on Jun 18, 2018, 11:31 am
Si tu lis la doc ici (https://github.com/mechasolution/Mecha_QMC5883L), tu vois qu'à minima, pour lire le capteur, il faut utiliser
Code: [Select]
qmc.read(&x,&y,&z);
La lecture de MechaQMC5883.h confirme qu'il n'y a pas de méthode avec moins d'arguments.
Title: Re: Mecha_QMC5883L : lire un seul axe?
Post by: lesept on Jun 18, 2018, 11:37 am
Tu dois pouvoir modifier ta version de la bibli en ajoutant dans le fichier cpp (https://github.com/mechasolution/Mecha_QMC5883L/blob/master/MechaQMC5883.cpp) une fonction pour toi, genre :
Code: [Select]
void MechaQMC5883::readX(uint16_t* x){
  read(x,y,z);
}
Title: Re: Mecha_QMC5883L : lire un seul axe?
Post by: fdufnews on Jun 18, 2018, 11:47 am
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.
Title: Re: Mecha_QMC5883L : lire un seul axe?
Post by: lesept on Jun 18, 2018, 12:01 pm
Tu as raison, mais les koalas aiment bien compliquer les choses simples :)
Title: Re: Mecha_QMC5883L : lire un seul axe?
Post by: kammo on Jun 18, 2018, 01:09 pm
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