El acelerómetro de iPhone

Share

Una de las características más vistosas de nuestro dispositivo iPhone/iPod touch es la del acelerómetro, que es aquel que nos permite controlar los distintos movimientos que se producen en el mismo, o como mejor definición la presentada por Wikipedia como:

“Usado para determinar la posición de un cuerpo, pues al conocerse su aceleración en todo momento, es posible calcular los desplazamientos que tuvo. Considerando que se conocen la posición y velocidad original del cuerpo bajo análisis, y sumando los desplazamientos medidos se determina la posición.”

Pues bien, ya que sabemos de que hablamos, ahora vamos a saber como utilizarlo en nuestras aplicaciones, no sin antes dejar bien claro que este caso práctico solamente es posible compilarlo y depurarlo a través de nuestro dispositivo, ya que de momento mediante el simulador no hay manera de reproducir dichos movimientos.

-La clase UIAccelerometer

Esta clase es la responsable de registrar los movimientos que se producen en nuestro dispositivo. Obtenemos como información los cambios producidos en cualquiera de sus tres ejes X, Y, Z  (rotación – inclinación).

 

UIAccelerationValue	_accelerometer[3]; 
//3 para controlar cada uno de los ejes

No es necesario crear objetos de esta clase, ya que usaremos el objeto compartido del dispositivo (sharedAccelerometer) para recibir los eventos de dicha clase, según el intervalo de tiempo que le definamos (20 milisegundos son 50Hz). Dichos eventos serán siempre recogidos en el hilo principal de nuestra aplicación y controlados por su delegado (delegate).

 

[[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0 / 50)];

[[UIAccelerometer sharedAccelerometer] setDelegate:self];

 

En nuestra clase delegada de UIApplication, es necesario definamos el protocolo UIAccelerometerDelegate en nuestro fichero de declaración:

 

@interface AppController : NSObject <UIAccelerometerDelegate>

Gracias a dicho protocolo, podemos recibir dichos eventos en nuestro fichero de implementación mediante:

- (void)accelerometer:(UIAccelerometer *)accelerometer 
    didAccelerate:(UIAcceleration *)acceleration

 

- Simular el efecto gravedad

El siguiente bloque de código, localizado en nuestra función didAccelerate, simula el efecto gravedad para que los movimientos no sean bruscos. Esto se consigue aplicando un leve filtro a nuestros valores de X, Y y Z, en este caso de un 10% de datos de aceleración no filtrada.

 

_accelerometer[0]=acceleration.x * 0.1 + _accelerometer[0]*(1.0 - 0.1);

_accelerometer[1]=acceleration.y * 0.1 + _accelerometer[1]*(1.0 - 0.1);

_accelerometer[2]=acceleration.z * 0.1 + _accelerometer[2]*(1.0 - 0.1);

 

 

banner ad

3 Responses to “El acelerómetro de iPhone”

  1. [...] iPhone Software wrote an interesting post today on El acelerómetro de iPhoneHere’s a quick excerptUna de las características más vistosas de nuestro dispositivo iPhone/iPod touch es la del [...]

  2. [...] El acelerómetro de iPhone [...]

  3. angel vera says:

    Amigos tengo un problema con mi telefono precisamente el acelerometro a dejado de funcionar o al menos eso creo, lo restaure y sigue igual, contactos, mail, safari y fotos teniendolo en posicion vertical se giran solos. Espero alguna ayuda de su parte gracias

Leave a Reply