Boussole électronique

Bonjour à tous !
Je viens de faire l’acquisition d’un capteur HMC5883L afin de faire une boussole avec un arduino.

Problème, le capteur ne semble pas alimenté...

Je m’explique :

J’ai pris un programme sur un site :

#include <Wire.h> // Bibliothèque pour i2c
#define addresse 0x1E // Adresse i2c du capteur HMC5883
// valeurs requises pour calibrer nos mesures (spécifique à votre module):
const int calibration = 0; // régler à "1" pour calibrer vos mesures, "0" pour utiliser les mesures non-calibrées
const int xmin = 0;
const int xmax = 0;
const int ymin = 0;
const int ymax = 0;
void setup() {
  Serial.begin(9600);
  Wire.begin();
// Initialisation du HMC5883
  Wire.beginTransmission(addresse);
  Wire.write(0x02);
  Wire.write(0x00); // mode de mesure continue
  Wire.endTransmission();
}
void loop() {
int xbrut, ybrut, zbrut, xcalibree, ycalibree;
// On demande une prise de mesure
  Wire.beginTransmission(addresse);
  Wire.write(0x03);
  Wire.endTransmission();
// Lecture des mesures
  Wire.requestFrom(addresse, 6);
if (6 <= Wire.available()) {
    xbrut = Wire.read() << 8; //X msb
    xbrut |= Wire.read(); //X lsb
    zbrut = Wire.read() << 8; //Z msb
    zbrut |= Wire.read(); //Z lsb
    ybrut = Wire.read() << 8; //Y msb
    ybrut |= Wire.read(); //Y lsb
  }
// calibration, si désirée:
if (calibration) {
    xcalibree = map(xbrut, xmin, xmax, -1000, 1000);
    ycalibree = map(ybrut, ymin, ymax, -1000, 1000);
// affichage au moniteur série
    Serial.print(xcalibree); Serial.print("\t");
    Serial.print(ycalibree); Serial.print("\t");
    Serial.println(zbrut);
  }
else // on affiche les valeurs brutes
  {
    Serial.print(xbrut); Serial.print("\t");
    Serial.print(ybrut); Serial.print("\t");
    Serial.println(zbrut);
  }
delay(250); // court délai pour ralentir un peu le processus
}

Le problème est que j’obtiens des valeurs constantes et qui ne changent pas que le capteur soit branché ou non...
Donc il est évident que le capteur n’est pas actif

J’ai ensuite fait des tests avec une led (car le capteur en est dépourvu) et j’ai donc branché une led en série et elle s’allume une microseconde et s’éteint immédiatement.

Auriez-vous une idée concernant la cause de ce problème ? (Est-ce que le capteur est complètement foutu ?)

Merci beaucoup et bonne journée !

faites tourner un programme qui scanne le bus I2C pour voir si votre composant est bien identifié

certains HMC5883L n'ont pas d'adaptateur 5V -> 3.3V donc vérifiez que la tension d'alimentation et la discussion en I2C correspond à la spec.

Ce serait bien de ne pas faire des doublons. Tu as déjà ouvert un fil de discussion sur ce sujet ici où tu as déjà obtenu des réponses.