pas de données sur moniteur série module sensor 3 Axis HMC5883L

Bonjour,
C'est mon deuxième module HMC5883L, pensant que le premier était défaillant.
VCC---> 3.3V
GND---> GND
SCL---> A5
SDA---> A4

Jen'obtiens rien sans le moniteur série ! J'ai essayé dans mon jardin à l'abris des éventuels champs magnétiques. Le code est le suivant:

#include <Wire.h>
#include <HMC5883L.h>

HMC5883L compass;

int minX = 0;
int maxX = 0;
int minY = 0;
int maxY = 0;
int offX = 0;
int offY = 0;

void setup()
{
 Serial.begin(9600);

 // Initialize Initialize HMC5883L
 while (!compass.begin())
 {
   delay(500);
 }

 // Set measurement range
 compass.setRange(HMC5883L_RANGE_1_3GA);

 // Set measurement mode
 compass.setMeasurementMode(HMC5883L_CONTINOUS);

 // Set data rate
 compass.setDataRate(HMC5883L_DATARATE_30HZ);

 // Set number of samples averaged
 compass.setSamples(HMC5883L_SAMPLES_8);
}

void loop()
{
 Vector mag = compass.readRaw();

 // Determine Min / Max values
 if (mag.XAxis < minX) minX = mag.XAxis;
 if (mag.XAxis > maxX) maxX = mag.XAxis;
 if (mag.YAxis < minY) minY = mag.YAxis;
 if (mag.YAxis > maxY) maxY = mag.YAxis;

 // Calculate offsets
 offX = (maxX + minX)/2;
 offY = (maxY + minY)/2;

 Serial.print(mag.XAxis);
 Serial.print(":");
 Serial.print(mag.YAxis);
 Serial.print(":");
 Serial.print(minX);
 Serial.print(":");
 Serial.print(maxX);
 Serial.print(":");
 Serial.print(minY);
 Serial.print(":");
 Serial.print(maxY);
 Serial.print(":");
 Serial.print(offX);
 Serial.print(":");
 Serial.print(offY);
 Serial.print("\n");
}

Merci encore une fois,
Franck

Peut-être que ton code n'arrive pas dans loop()
Dans le setup(), tu as ça

 // Initialize Initialize HMC5883L
 while (!compass.begin())
 {
   delay(500);
 }

Ce serait bien de mettre un Serial.print() avant et apprès pour voir si le programme ne reste pas bloqué dans cette boucle.

Est-ce que le magnétomètre est bien détecté sur le bus I2C avec un scanner de bus?

Ce serait bien de mettre un Serial.print() avant et apprès pour voir si le programme ne reste pas bloqué dans cette boucle.

Je sais pas où écrire Serial.print() , désolé, je suis complètement novice.

Amicalement

Franck

avec le sketch de scan de bus, j'ai ça:

I2C slave scanner
reserved adress
. no slave detected
X slave detected

0 1 2 3 4 5 6 7 8 9 A B C D E F
0 . . . . . X . .
1 . . . . . . . . . . . . . . . .
2 . . . . . . . . . . . . . . . .
3 . . . . . . . . . . . . . . . .
4 . . . . . . . . . . . . . . . .
5 . . . . . . . . . . . . . . . .
6 . . . . . . . . . . . . . . . .
7 . . . . . . . . . . . .

1 device found on the bus

Bonjour
Pour i2c il ne faut pas initialiser wire?

Wire.begin();

J'ai maintenantune tonne de messages d'erreurs:

In file included from C:\Users\franck\Desktop\SketchesArduinoVol2\08 Sketches and Libraries\sketches\_7_NeoPixel_Compass\_7_NeoPixel_Compass.ino:5:0:

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/FastLED.h:11:2: warning: #warning FastLED version 3.000.002 (Not really a warning, just telling you here.) [-Wcpp]

 #warning FastLED version 3.000.002  (Not really a warning, just telling you here.)

  ^

In file included from C:\Users\franck\Documents\Arduino\libraries\FastLED-master/controller.h:5:0,

                 from C:\Users\franck\Documents\Arduino\libraries\FastLED-master/FastLED.h:29,

                 from C:\Users\franck\Desktop\SketchesArduinoVol2\08 Sketches and Libraries\sketches\_7_NeoPixel_Compass\_7_NeoPixel_Compass.ino:5:

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/pixeltypes.h:261:33: warning: unused parameter 'DUMMY_ARG' [-Wunused-parameter]

     inline CRGB operator-- (int DUMMY_ARG)  __attribute__((always_inline))

                                 ^

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/pixeltypes.h:276:33: warning: unused parameter 'DUMMY_ARG' [-Wunused-parameter]

     inline CRGB operator++ (int DUMMY_ARG)  __attribute__((always_inline))

                                 ^

In file included from C:\Users\franck\Documents\Arduino\libraries\FastLED-master/FastLED.h:30:0,

                 from C:\Users\franck\Desktop\SketchesArduinoVol2\08 Sketches and Libraries\sketches\_7_NeoPixel_Compass\_7_NeoPixel_Compass.ino:5:

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/fastpin.h:53:47: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]

  port_t hival() __attribute__ ((always_inline)) { return *mPort | mPinMask;  }

                                               ^

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/fastpin.h:54:47: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]

  port_t loval() __attribute__ ((always_inline)) { return *mPort & ~mPinMask; }

                                               ^

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/fastpin.h:56:46: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]

  port_t mask() __attribute__ ((always_inline)) { return mPinMask; }

                                              ^

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/fastpin.h:116:54: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]

  static port_t hival() __attribute__ ((always_inline)) { return *sPort | sPinMask;  }

                                                      ^

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/fastpin.h:117:54: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]

  static port_t loval() __attribute__ ((always_inline)) { return *sPort & ~sPinMask; }

                                                      ^

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/fastpin.h:119:53: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]

  static port_t mask() __attribute__ ((always_inline)) { return sPinMask; }

                                                     ^

In file included from C:\Users\franck\Documents\Arduino\libraries\FastLED-master/FastLED.h:31:0,

                 from C:\Users\franck\Desktop\SketchesArduinoVol2\08 Sketches and Libraries\sketches\_7_NeoPixel_Compass\_7_NeoPixel_Compass.ino:5:

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/fastspi.h:24:66: warning: unused parameter 'len' [-Wunused-parameter]

  static __attribute__((always_inline)) inline void postBlock(int len) {}

                                                                  ^

In file included from C:\Users\franck\Documents\Arduino\libraries\FastLED-master/clockless.h:22:0,

                 from C:\Users\franck\Documents\Arduino\libraries\FastLED-master/FastLED.h:32,

                 from C:\Users\franck\Desktop\SketchesArduinoVol2\08 Sketches and Libraries\sketches\_7_NeoPixel_Compass\_7_NeoPixel_Compass.ino:5:

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/clockless_trinket.h:35:82: warning: unused parameter 'loopvar' [-Wunused-parameter]

 template<> __attribute__((always_inline)) inline void _dc<-6>(register uint8_t & loopvar) {}

                                                                                  ^

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/clockless_trinket.h:36:82: warning: unused parameter 'loopvar' [-Wunused-parameter]

 template<> __attribute__((always_inline)) inline void _dc<-5>(register uint8_t & loopvar) {}

                                                                                  ^

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/clockless_trinket.h:37:82: warning: unused parameter 'loopvar' [-Wunused-parameter]

 template<> __attribute__((always_inline)) inline void _dc<-4>(register uint8_t & loopvar) {}

                                                                                  ^

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/clockless_trinket.h:38:82: warning: unused parameter 'loopvar' [-Wunused-parameter]

 template<> __attribute__((always_inline)) inline void _dc<-3>(register uint8_t & loopvar) {}

                                                                                  ^

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/clockless_trinket.h:39:82: warning: unused parameter 'loopvar' [-Wunused-parameter]

 template<> __attribute__((always_inline)) inline void _dc<-2>(register uint8_t & loopvar) {}

                                                                                  ^

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/clockless_trinket.h:40:82: warning: unused parameter 'loopvar' [-Wunused-parameter]

 template<> __attribute__((always_inline)) inline void _dc<-1>(register uint8_t & loopvar) {}

                                                                                  ^

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/clockless_trinket.h:41:81: warning: unused parameter 'loopvar' [-Wunused-parameter]

 template<> __attribute__((always_inline)) inline void _dc<0>(register uint8_t & loopvar) {}

                                                                                 ^

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/clockless_trinket.h:42:81: warning: unused parameter 'loopvar' [-Wunused-parameter]

 template<> __attribute__((always_inline)) inline void _dc<1>(register uint8_t & loopvar) {asm __volatile__("mov r0,r0":::);}

                                                                                 ^

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/clockless_trinket.h:43:81: warning: unused parameter 'loopvar' [-Wunused-parameter]

 template<> __attribute__((always_inline)) inline void _dc<2>(register uint8_t & loopvar) {asm __volatile__("rjmp .+0":::);}

                                                                                 ^

C:\Users\franck\Desktop\SketchesArduinoVol2\08 Sketches and Libraries\sketches\_7_NeoPixel_Compass\_7_NeoPixel_Compass.ino: In function 'void loop()':

C:\Users\franck\Desktop\SketchesArduinoVol2\08 Sketches and Libraries\sketches\_7_NeoPixel_Compass\_7_NeoPixel_Compass.ino:76:71: warning: integer overflow in expression [-Woverflow]

       fixedHeadingDegrees = map (headingDegrees * 100, 240 * 100, 360 * 100, 180 * 100, 360 * 100) / 100.00;

                                                                       ^

C:\Users\franck\Desktop\SketchesArduinoVol2\08 Sketches and Libraries\sketches\_7_NeoPixel_Compass\_7_NeoPixel_Compass.ino:76:93: warning: integer overflow in expression [-Woverflow]

       fixedHeadingDegrees = map (headingDegrees * 100, 240 * 100, 360 * 100, 180 * 100, 360 * 100) / 100.00;

J'ai une bonne et une mauvaise nouvelle :

La bonne c'est que tu n'as aucun message d'erreurs, que des warnings :wink:

La mauvaise c'est qu'un warning ignoré est pire qu'un message d'erreur !

Un message d'erreur empêche la production d'un exécutable foireux. Un warning non, ton programme est compilé et téléversé malgré des avertissements plus ou moins important/grave :

Exemple d'un warning pas grave, sans grande incidence :

C:\Users\franck\Documents\Arduino\libraries\FastLED-master/clockless_trinket.h:43:81: warning: unused parameter 'loopvar' [-Wunused-parameter]

traduction à la volée : Le paramètre loopvar n'est pas utilisé (le compilateur le fait remarquer, pour lui c'est louche).

Exemple plus grave (produisant des résultats faux) :

C:\Users\franck\Desktop\SketchesArduinoVol2\08 Sketches and Libraries\sketches\_7_NeoPixel_Compass\_7_NeoPixel_Compass.ino:76:93: warning: integer overflow in expression [-Woverflow]

       fixedHeadingDegrees = map (headingDegrees * 100, 240 * 100, 360 * 100, 180 * 100, 360 * 100) / 100.00;

Traduction : dépassement des capacités d'un int dans l'expression. Là il y a perte d'information, il faut envisager de faire les calculs avec des long :
fixedHeadingDegrees = map (headingDegrees * 100L, 240 * 100L, 360 * 100L, 180 * 100L, 360 * 100L) / 100.00;

merci,

Y'en a t-il d'autres?
Amicalement
Franck

D'autres warnings "graves", non pas vu !

Bonjour,

J'ai fini par trouver le bug.
Les chips que j'achetais, croyant qu'il s'agissait d'HMC5883L étaient en fait des fakes bas de gamme étiquetés (code spécial) QMC5883L.

voir: http://qqtrading.com.my/3-axis-magnetic-field-sensor-module-gy-271-hmc5883l

A MON AVIS A DIFFUSER SI PAS CONNU.

Happy Black Friday

Franck

en francais explications mieux compréhensibles

Bonjour

les différences entre HMC et QMC ont déjà été abordées à plusieurs reprises sur ce forum
par exemple içi : Boussole HMC5883 (GY-271) - Français - Arduino Forum