Ce site contient essentiellement des notes de travail. Le contenu est en constante évolution, et loin d'être achevé. (+ d'infos)
La plupart des documentations informatiques sont orientées Debian / Ubuntu.

Electronique/Hardware/Sensors/MMC2120MG/Arduino

De Ordinoscope.net
Sauter à la navigation Sauter à la recherche

Introduction

Ce code est un regroupement simplifié de ce que j'ai pu trouver sur internet. Mais mes deux compas, un DC-SS503 et un DC-SS504 de SureElectronics donnent les même résultats aberrants. Je laisse ce code à titre d'exemple pour ceux que ça pourrait intéresser de poursuivre les recherches.

Pour mon compte, je suis passé sur le HMC5883, qui fonctionne à merveille.

Code

#include <Wire.h>
#include <math.h>

int myADDR = B0110000;

void setup() {
  Wire.begin ();
  Serial.begin (115200);
  Serial.println ("setup");
}

void loop() {
  compassReader();
  delay(1000);
}

void compassReader() {
  int myx;
  int myy;
  
  Wire.beginTransmission(myADDR);
  Wire.send(B00000000);
  Wire.send(B00000001);
  Wire.endTransmission();
  delay(6);
 
  Wire.requestFrom(myADDR, 5);
  if (Wire.available() == B00000101) {
    myx = (int) Wire.receive () << 8 | (int) Wire.receive ();
    myy = (int) Wire.receive () << 8 | (int) Wire.receive ();

    double angle= atan2((double)myx,(double)myy) * (180 / 3.14159265) + 180;
  
    Serial.print(myx);
    Serial.print(" , ");
    Serial.print(myy);
    Serial.print(" , ");
    Serial.println(angle);
  } else {
    Serial.println ("compass sensor status not 5, probable I2C read error, or sensor recovering");
  }
}