Акселерометр обнаруживает движения из стороны в сторону — мгновенное обнаружение изменения направления
-
21-09-2019 - |
Вопрос
У меня есть приложение, которое делает одно, если встряхнуть его в одну сторону, и другое, если встряхнуть в другую.
atm мой код.
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 работают над тем, чтобы он не был слишком чувствительным.
однако этот код не дает мне желаемых результатов.Мне нравится, чтобы изображения мигали (см. код), как только человек начинает перемещать устройство в другую сторону.
Есть ли способ сделать это?
Решение
Что ж, вам придется интегрировать ускорение, чтобы получить скорость.К сожалению, акселерометр немного шумный и неизбежно немного смещается, поэтому вам придется фильтровать этот интеграл.я думать фильтр, описанный в http://www.musicdsp.org/showone.php?id=92 сделает то, что вам нужно, с частотой среза, установленной примерно на 1/4 частоты дискретизации.Вам нужно band
выход, и вам придется настроить параметр резонанса.