Closed dethegeek closed 8 years ago
Hi there
I just compiled it without a problem. Can not seem to duplicate.
Mike
Sorry
I forgot to mention : the error is in the example sketch FreeIMU_serial_calib.ino.
I disabled all hardware related #include and enabled only LSM303, L3G and BMP085.
I also commented out :
#define Has_LSM303 0
#define HAS_GPS 0
By the way, should I use this sketch to calibrate my sensors ?
EDIT : The error is the following
FreeIMU_serial_calib.ino: In function 'void loop()':
FreeIMU_serial_calib:170: error: 'class FreeIMU' has no member named 'magn'
and t he related code :
#if IS_9DOM() && (!HAS_MPU9150() && !HAS_MPU9250() && !HAS_ALTIMU10() && !HAS_LSM9DS0())
my3IMU.magn.getValues(&raw_values[0], &raw_values[1], &raw_values[2]);
writeArr(raw_values, 3, sizeof(int));
#endif
Then IS_9DOM() is true but all other macros are also true.
In FreeIMU.h there is the following :
#if HAS_HMC5883L()
HMC58X3 magn;
iCompass maghead;
#endif
which is ignored with my sensor
Sorry it took me so long to answer this one but been busy with converting to IDE 1.6.7 and work with Intel boards. Anyway I traced the error, change the line:
#if IS_9DOM() && (!HAS_MPU9150() && !HAS_MPU9250() && !HAS_ALTIMU10() && !HAS_LSM9DS0())
to
Let me know if this works. It compiles but I have not actually tested it. As for your question on what sketch to use. I would recommend going with FreeIMU_serial_ARM_CPU.ino.
Mike
I posted updates to the library with the above change. I am going to go ahead and close this issue.
Mike
Just tested. The code compiles, but when I send a 'b' command, I only get plenty of empty lines.
If I check the code, I notice the bunck of #if has no entry for a Adafruit 10DOF IMU.
Why the code for 'r' and 'b' comands are so different ? I thought r is for human readable output, and 'b' is for binary output.
After making this sketch work, I'll switch to FreeIMU_serial_ARM_CPU.ino.
If you look at the serial.ino file you are correct - you need to add HAS_ADA_10_DOF() to line 166. So it should read:
#elif HAS_ALTIMU10() || HAS_ADA_10_DOF()
I am going to have to make this change in several other sketches as well. As to the reason why the code is so different now entirely sure - this is a legacy from Fabio's original code base that I just carried over.
PS. You could also just use the altimu10 config setting as well, if you want to give it a quick try.
As the changes I suggested are similar to those you do, I'll open tickets for issues I find, and submit pull requests when possible.
When it is possible, people should help you, then I'll do.
Thanks appreciate it. Two questions - (1) did the change work for you and (2) where do you live. I am in NY
(1) : yes it works (2) : I live in France
Hi
FreeIMU_serial_calib.ino cannot compile with a Adafruit 10DOF : FreeIMU object does not contains and expose the public magn attribute.
I need to do some tests to ensure my fix is goot (and probably a pull request)