Акселерометр, обнаруживающий движения из стороны в сторону - мгновенное обнаружение изменения направления - PullRequest
0 голосов
/ 17 января 2010

У меня есть приложение, которое делает одно, если вы встряхиваете его одним способом, и другое, если вы встряхиваете другим.

атм мой код

if (acceleration.x > 1.5) {

// рука вправо, когда лицом к вам

    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 и -1 работают не слишком чувствительно.

однако, этот код не дает мне желаемых результатов. Мне бы хотелось, чтобы изображения мигали (см. Код), как только человек начинает перемещать устройство в другую сторону.

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 17 января 2010

Ну, вам нужно интегрировать ускорение, чтобы получить скорость. К сожалению, акселерометр немного шумит и неминуемо дрейфует, так что вам придется фильтровать этот интеграл. Я думаю, фильтр, описанный в http://www.musicdsp.org/showone.php?id=92, будет делать то, что вам нужно, с частотой среза, установленной примерно на 1/4 частоты дискретизации. Вам нужен вывод band, и вам нужно настроить параметр резонанса.

...