Forum: Mikrocontroller und Digitale Elektronik MPU9150 in Projekt-Klasse


von Willi K. (kucky)


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

: Verschoben durch User
von Willi K. (kucky)


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

von Willi K. (kucky)


Lesenswert?

Problem ist gelöst.

Gruß Willi

von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

Und woran lag es?

von Willi K. (kucky)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.