Hi,
benutze den Arduino Fio und den Sensor LSM9DSO https://learn.adafruit.com/adafruit-lsm9ds0-accelerometer-gyro-magnetometer-9-dof-breakouts/wiring-and-test.
Benutze auch den Testsketch, der auf der Seite angeboten wird, um die Daten des Sensors auszulesen.
Nun habe ich diesen Sketch etwas versucht zu modifizieren, da ich die 5 sekunden lang den Sensor auslesen will und diese im Array speichern will. Nun habe ich gesagt, dass ich jede 100ms ihn auslesen will, müsste 50mal ausführen, damit ich 5 sekunden daten hätte.
Habe dies anhand einer For-Schleife realisiert, doch es sind mehr als 5sekunden bis er alle werte hat woran kann das liegen?
Hier nochmal die Funktion, die ich geschrieben habe:
void secBuffer()
{
//for loop, 50 because every 100ms I read so in 1sek = 10 values --> 10Values*100ms
// save 5secondes to analyse if static or dynamic + these data is needed to analyse in the 3.Phase
//if lying position intentional or not
for (int count = 0; count < 50; count++)
{
/* Get a new sensor event */
/*These events should be called in the for-loop*/
/*so that u have every 100ms/every measurement actual data*/
sensors_event_t accel, mag, gyro, temp;
lsm.getEvent(&accel, &mag, &gyro, &temp);
// -y = g
/*Problem: When y = g(9,81m/s²) sensor has value > 9.81 so calibration
to 9.81m/s² & other axis to 0.00m/s² -> y shos down -> -9.81
y < 0 && abs(y) > 9.81 is for -y = g
abs(..) means -> when u have a value like -x = | x | Betragszeichen */
if (accel.acceleration.y < 0 && abs(accel.acceleration.y) > 9.81)
{
accel.acceleration.y = 9.81 * (-1); // *(-1) to have negative value because z shows down
accel.acceleration.x = 0.00;
accel.acceleration.z = 0.00;
}
// y=g
/*Problem: When y = g(9.81m/s²) sensor has value > 9.81 so calibration
y > 0 && abs(y) > 9.81 is for y = g --> y shows up -> 9.81 m/s² */
//abs(..) means -> when u have a value like -x = | x | Betragszeichen */
if(accel.acceleration.y > 0 && abs(accel.acceleration.y) > 9.81)
{
accel.acceleration.y = 9.81;
accel.acceleration.x = 0.00;
accel.acceleration.z = 0.00;
}
/*-----------------------Calibration of z axis------------------------*/
// -z = g
/*Problem: When z = g(9.81m/s²) sensor has value > 9.81 so calibration
y < 0 && abs(y) > 9.81 is for -z = g --> y shows down -> -9.81 m/s² */
//abs(..) means -> when u have a value like -x = | x | Betragszeichen */
if (accel.acceleration.z < 0 && abs(accel.acceleration.z) > 9.81)
{
accel.acceleration.z = 9.81 * (-1);
accel.acceleration.x = 0.00;
accel.acceleration.y = 0.00;
}
// z = g
/*Problem: When z = g(9.81m/s²) sensor has value > 9.81 or <> 9.81 so calibration
z > 0 && abs(z) >= 9.7 is for z = g --> z shows up -> -9.81 m/s² */
/*Here maybe no calibration because i have values for x around 9.7, 9.82!!!*/
//abs(..) means -> when u have a value like -x = | x | Betragszeichen */
if(accel.acceleration.z > 0 && abs(accel.acceleration.z) >= 9.7)
{
accel.acceleration.z = 9.81;
accel.acceleration.x = 0.00;
accel.acceleration.y = 0.00;
}
/*-----------------------Calibration of x axis------------------------*/
// -x = g;
/*Problem: When x = g(9.81m/s²) sensor has value > 9.81 so calibration
x < 0 && abs(x) > 9.81 is for -x = g --> x shows down -> -9.81 m/s² */
//abs(..) means -> when u have a value like -x = | x | Betragszeichen */
if(accel.acceleration.x < 0 && abs(accel.acceleration.x) > 9.81)
{
accel.acceleration.x = 9.81 * (-1);
accel.acceleration.y = 0.00;
accel.acceleration.z = 0.00;
}
//x=g
/* when x = g(9,81 m/s²) has value > 9.81 so calibration
x > 0 && abs(x) > 9.81 is for x = g --> x shows up -> 9.81 m/s² */
//abs(..) means -> when u have a value like -x = | x | Betragszeichen */
if(accel.acceleration.x > 0 && abs(accel.acceleration.x) >=9.4)
{
accel.acceleration.x = 9.81;
accel.acceleration.y = 0.00;
accel.acceleration.z = 0.00;
}
/*Output of Axis-Values*/
Serial.println("Accel: x,y,z");
Serial.print(accel.acceleration.x);
Serial.print(";");
Serial.print(accel.acceleration.y);
Serial.print(";");
Serial.println(accel.acceleration.z);
Serial.print("\r\n");
Serial.println("Gyro: x,y,z");
Serial.print(gyro.gyro.x);
Serial.print(";");
Serial.print(gyro.gyro.y);
Serial.print(";");
Serial.println(gyro.gyro.z);
Serial.println("------------------------");
/*--------Vektormagnitude in Array (Accel+Gyro)--------------*/
//Array Accelerometer
MagAccel_A[count]= sqrt(pow(accel.acceleration.x,2)+pow(accel.acceleration.y,2)+pow(accel.acceleration.z,2));
Serial.println("Magnitude Accelerometer");
Serial.println(MagAccel_A[count]);
Serial.print("\r\n");
//Array Gyroscope ---> sqrt = Wurzel , pow(zahl, potenz)
MagGyro_A[count] = sqrt(pow(gyro.gyro.x,2)+pow(gyro.gyro.y,2)+pow(gyro.gyro.z,2));
Serial.println("Magnitude Gyroscope");
Serial.println(MagGyro_A[count]);
Serial.println("------------------------");
delay(100);
}
Serial.println("5sekunden vorbei");
}
Kann mir da jemand helfen, woran das liegt?