Acelerómetro la detección de un lado a otro movimientos - la detección instantánea de cambio de dirección
-
21-09-2019 - |
Pregunta
Id tiene una aplicación que hace una cosa si lo agita una manera, y otro si lo agite el otro.
atm mi código es.
if (acceleration.x > 1.5) {
// brazo a la derecha cuando se mira usted
float duration = ([imageArray count]*0.04);
//HUMAN EYE KEEPS IMAGES IN EYE For 40 MILLISECONDS//
//NSLog(@"duration:%f", duration);
[theFlash setAnimationImages:imageArray];
[theFlash setAnimationRepeatCount:1];
theFlash.animationDuration = duration;
[theFlash startAnimating];
NSLog(@"images flashed forward");
}
if (acceleration.x < -1)
{
//arm to the left when facing you
float duration = ([imageArrayReversed count]*0.04);
//HUMAN EYE KEEPS IMAGES IN EYE For 40 MILLISECONDS//
NSLog(@"duration:%f", duration);
[theFlash setAnimationImages:imageArrayReversed];
[theFlash setAnimationRepeatCount:1];
theFlash.animationDuration = duration;
[theFlash startAnimating];
NSLog(@"images flashed backward");
}
los 1 y -1 valores están trabajando en ello no ser demasiado sensible.
Sin embargo, este código no me está dando los resultados deseados. Id al igual que las imágenes de flash (ver el Código) tan pronto como la persona comienza a mover el dispositivo hacia otro lado.
Cualquier manera de hacer esto?
Solución
Bueno, vas a tener que integrar la aceleración para obtener la velocidad. Por desgracia, el acelerómetro es un poco ruidoso e inevitablemente se deriva un poco, por lo que vamos a tener que filtrar integral. I piensan el filtro se describe en http: //www.musicdsp .org / showone.php? id = 92 hará lo que necesita, con la frecuencia de corte se establece en torno a 1/4 de la frecuencia de muestreo. Se necesita la salida band
, y que tendrá que ajustar el parámetro de resonancia.