Hi,
benutze den Arduino Fio und den Sensor LSM9DSO Arduino Code | Adafruit LSM9DS0 Accelerometer + Gyro + Magnetometer 9-DOF Breakouts | Adafruit Learning System.
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?