MPU9150 in Projekt-Klasse

OP #3820566
Lesenswert?

Hallo zusammen,
in einem Projekt benutze ich die Lib "MPU6050". Alles funktioniert gut.
Das MPU-Setup läuft aber in der Haupt (ino) Datei. Die MPU-Daten werden 
auch aus der loop heraus gelesen. (Siehe MPU6050 example).
Nun möchte ich aber die MPU6050-Lib in einer eigenen Projektklasse 
verwenden.

z.B.
void IMUClass::init()
{
    Serial.println(F("Initializing I2C devices..."));
    mpu.initialize();
etc.
void IMUClass::readMPU()
{
    mpuInterrupt = false;
    mpuIntStatus = mpu.getIntStatus();
    fifoCount = mpu.getFIFOCount();
eingebaut etc.

Wenn ich alle Deklationen in Initialisierungen in meiner Klasse 
eingebaut habe, kommt diese Meldung:

Compiling 'MPU9150_Test' for 'Arduino Mega 2560 or Mega ADK'
MPU9159Class.cpp.o:In function `MPU6050::dmpGetAccel(long*, unsigned 
char const*)'
MPU6050_9Axis_MotionApps41.h:dmpGetAccel(long*, unsigned char const*)'
MPU9150_Test.cpp.o:\MPU6050_9Axis_MotionApps41.h:636: first defined here
ld.exe:Disabling relaxation: it will not work with multiple definitions
usw.

Ich verstehe, was der Compiler meint, aber wie stelle ich den Fehler ab?

Die Libs
#include "MPU6050_9Axis_MotionApps41.h"
#include "helper_3dmath.h"
#include "I2Cdev.h"
liegen im Projektverzeichnins. Ich arbeite mit VS+Visualmicro.

Es wäre schön, wenn ich hier ein Lösung finden könnte. Ich versuche das 
schon sehr sehr lange.

Gruß
Willi
OP #3825320
Lesenswert?

Hallo zusammen,
hat wirklich keiner einen Lösungsvorschlag? Soll ich den Testcode mal 
anhängen? Das seltsame ist ja, dass dies nur mit dieser speziellen Lib 
nicht funktioniert. Andere, wie z.B. PIDv1, BMP085, kein Problem.

Bin wirklich auf Eure Hilfe angewiesen, auch wenn die Frage banal sein 
sollte.

Gruß Willi
OP #3844737
Lesenswert?

Es scheint tatsächlich an der Lib zu liegen. Insbesondere dann, wenn man 
die 6- bzw. 9 Achsenversion einbindet. Warum das so ist, kann ich nicht 
sagen. Der Compliler glaubt aber, das Teile der Lib mehrfach includiert 
werden. Ich bin dann auf die MPU9150lib gestoßen, und damit ist MEIN 
Problem gelöst. Was mich aber wundert ist, dass scheinbar nur ich das 
Problem habe.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren