Acelerómetro la detección de un lado a otro movimientos - la detección instantánea de cambio de dirección

StackOverflow https://stackoverflow.com/questions/2079732

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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top