Open budryerson opened 8 years ago
Hi,
I had the same problem and solved it by putting
if (read8(HMC5883_ADDRESS_MAG, HMC5883_REGISTER_MAG_MR_REG_M) == 0xFF) return false;
directly after Wire.begin();
Oliver
Thanks, Oliver. Adafruit should add that correction to their library.
I cobbled together my own library from bits and pieces of this and the Honeywell version. In my setup, I request the ID from the device and fail if I get other than "H43".
But these days, everyone uses an IMU of some kind with the mag compass built in. I don't think anyone but a masochist would use this device anymore.
Thanks Guys, but alas oliver30982's patch didn't immediately work for me on v1.8.5. Eventually I determined that, in my environment
(read8(HMC5883_ADDRESS_MAG, HMC5883_REGISTER_MAG_MR_REG_M)
returns 3 when the HMC5883 is present, and 0 when it is not.
In all fairness, my "HMC5883" might not be the real McCoy, as it came off an old CX-20 Quad. The chip is, however, marked L883.
I hope this is useful to someone.
This function apparently means to detect whether an HMC5883 device is detected, and if no device is detected, to trigger the "Ooops, no HMC5883 detected ... Check your wiring!" message in the Adafruit sensor initialization example code. It does not. As written, the function must always returns TRUE.