Problem mit Beispielcode MPU6065_DMP6

Guten Abend,

Der Code “MPU6065_DMP6” startet erst sobald man den Serial-Monitor öffnet bzw ein Com Port geöffnet wird. Leider kann ich nirgendwo im Code eine Einstellung dafür finden…
Habt ihr eine Idee woran es liegen könnte bzw. wie ich es so abändern kann das der Code durchläuft sobald das Arduino Strom bekommt?

Müsste das wissen da ich meine Drohne auf dem Code aufgebaut habe und Sie nun nicht testen kann :confused: Leider verstehe ich den Code auch nicht vollständig :confused:

Vielen Dank schonmal für eure Hilfe!

Mfg
Sven

MPU6050_DMP6.ino (15.5 KB)

Ich denke das Problem liegt hier:

    // wait for ready
    Serial.println(F("\nSend any character to begin DMP programming and demo: "));
    while (Serial.available() && Serial.read()); // empty buffer
    while (!Serial.available());                 // wait for data
    while (Serial.available() && Serial.read()); // empty buffer again

Er scheint darauf zu warten, dass "Serial.available" ist.
Wenn "Serial.available" nicht richtig ist (das Ausrufezeichen steht fuer 'NOT', dann wartet er auf Daten von aussen:

while (!Serial.available());                 // wait for data

Hoffe das hilft Dir weiter!
LG

Er hängt in einer (endlosen) Schleife fest, solange keine Daten von Seriell da sind. Während dieser Zeit kann der Prozessor auch nichts anderes tun.
Das ist bestimmt nicht so gewollt.

Gruß Tommy

Nach der Entfernung der bereits genannten Sperre können noch weitere Probleme auftauchen. Z.B. hängt bei meinem Uno und MPU6050_raw die serielle Ausgabe nach der Übertragung der ersten paar Werte. Entweder darf die Baudrate nicht zu hoch eingestellt werden, oder es liegt noch ein Bug in der Bibliothek.

Kann jemand eine alternative Bibliothek empfehlen?

Danke für eure schnellen und zahlreichen Antworten.
Zu DrDiettrich das Problem hab ich mittels eines delay(20); umgangen dann kommen nurnoch manchmal "FIFO overflow!" als Ausgabe ^^