Acelerômetro Detectando movimentos laterais - Detecção instantânea de mudança de direção

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

Pergunta

Eu tenho um aplicativo que faz uma coisa se você o agitar de uma maneira e de outra se você o agitar a outra.

ATM, meu código é.

if (acceleration.x > 1.5) {

// braço para a direita quando se deparar com você

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

}

Os valores 1 e -1 estão trabalhando em não ser muito sensível.

No entanto, esse código não está me dando os resultados desejados. Id Gosto das imagens para piscar (consulte o código) assim que a pessoa começar a mover o dispositivo para o outro lado.

Alguma maneira de fazer isso?

Foi útil?

Solução

Bem, você terá que integrar a aceleração para obter velocidade. Infelizmente, o acelerômetro é um pouco barulhento e inevitavelmente se desviará um pouco, então você terá que filtrar essa integral. EU acho o filtro descrito em http://www.musicdsp.org/showone.php?id=92 fará o que você precisa, com a frequência de corte definida para cerca de 1/4 da frequência de amostragem. Você precisa do band saída e você terá que ajustar o parâmetro de ressonância.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top