Servus. Ich bin gerade an einem Projekt für das ich einen Sensor brauche der die Orientierung und die G Kräfte misst. Bin noch komplett am Anfang, aber scheitere hier schon.
Mein teurer BMI088 V1.0 bringt sehr variierende Werte. Sieht eigentlich schon fast willkürlich aus, aber reagiert auf bewegungen.
Ist es mein Code der Falsch ist? Bin jetzt schon seit über 2 Stunden dran und so weit gekommen bis jetzt:
#include "BMI088.h"
#include "SensorFusion.h" //SF
SF fusion;
float deltat;
float pitch, roll, yaw;
float ax = 0, ay = 0, az = 0;
float gx = 0, gy = 0, gz = 0;
float gx_all;
float gy_all;
float gz_all;
float ax_all;
float ay_all;
float az_all;
BMI088 bmi088( 0x19, 0x69 );
void setup(void) {
Wire.begin();
Serial.begin(115200);
Serial.println("Bereit");
while (!Serial);
Serial.println("BMI088 Raw Data");
while (1) {
if (bmi088.isConnection()) {
bmi088.initialize();
Serial.println("BMI088 is connected");
break;
} else {
Serial.println("BMI088 is not connected");
}
delay(2000);
}
}
void loop(void) {
bmi088.getAcceleration(&ax, &ay, &az);
bmi088.getGyroscope(&gx, &gy, &gz);
/*
Serial.print(ax);
Serial.print("(ax), ");
Serial.print(ay);
Serial.print("(ay), ");
Serial.print(az);
Serial.print("(az), ");
Serial.print(gx);
Serial.print("(gx), ");
Serial.print(gy);
Serial.print("(gy), ");
Serial.print(gz);
Serial.print("(gz), ");
Serial.println();
*/
//Nimmt den Mittelwert aus 10000 Messungen
for (int i = 0; i < 10000; i++) {
gx_all = gx_all + gx;
gy_all = gy_all + gy;
gz_all = gz_all + gz;
ax_all = ax_all + ax;
ay_all = ay_all + ay;
az_all = az_all + az;
}
Serial.println("Fertig :");
gx_all = gx_all / 10000;
gy_all = gy_all / 10000;
gz_all = gz_all / 10000;
ax_all = ax_all / 10000;
ay_all = ay_all / 10000;
az_all = az_all / 10000;
deltat = fusion.deltatUpdate();
fusion.MahonyUpdate(gx_all, gy_all, gz_all, ax_all, ay_all, az_all, deltat);
pitch = fusion.getPitch();
roll = fusion.getRoll();
yaw = fusion.getYaw();
Serial.print("Pitch: ");
Serial.print(pitch);
Serial.print(", Roll: ");
Serial.print(roll);
Serial.print(", Yaw: ");
Serial.print(yaw);
Serial.println();
delay(1);
}
Und wenn ich gerade schon dabei bin, ich finde online über den BMI088 in kombination mit einem Arduino fast nichts. Wie bekomme ich die Beschleunigung und die wirkenden G Kräfte?
Danke und Grüße, Leo