Accéléromètre côté à l'autre de détection de mouvements - détection instantanée de changement de direction

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

Question

Id ont une application qui fait une chose si vous secouez une façon, et un autre si vous secouer l'autre.

atm mon code est.

if (acceleration.x > 1.5) {

// bras à droite lorsque vous face

    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");  

}

1 et les valeurs -1 y travaillent ne pas être trop sensible.

Cependant, ce code ne me donne pas les résultats escomptés. Id comme les images à flash (voir le code) dès que la personne commence à se déplacer l'appareil dans l'autre sens.

Toute façon de le faire?

Était-ce utile?

La solution

Eh bien, vous allez devoir intégrer l'accélération pour obtenir la vitesse. Malheureusement, l'accéléromètre est un peu bruyant et dérive inévitablement un peu, donc vous allez devoir filtrer cette intégrale. I pense le filtre décrit http: //www.musicdsp .org / showone.php? id = 92 va faire ce que vous avez besoin, avec la fréquence de coupure est fixée à environ 1/4 de la fréquence d'échantillonnage. Vous avez besoin de la sortie band, et vous devrez régler le paramètre de résonance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top