Accéléromètre côté à l'autre de détection de mouvements - détection instantanée de changement de direction
-
21-09-2019 - |
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?
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.