
Como resultado de
ello, en la página de “sensores” de nuestra interfaz
gráfica aparece ahora la imagen de una
brújula, cuya aguja irá rotando
en función de las lecturas obtenidas del sensor brújula.
Para poder llevar a
cabo esta monitorización, hemos tenido que introducir algunos cambios en la clase principal del software de nuestro robot:
- Main.java: el nuevo array de datos que manda el robot de manera continua por el stream de salida Bluetooth está formado por 7 bytes: distancia, color de la pelota, color del contenedor, pelotas que le quedan, batería y 2 bytes con la medida de la brújula.
Para que estos
cambios también se vean reflejados en la propia aplicación Android, hemos
realizado algunas modificaciones más en las siguientes clases del software de la aplicación:
- Robot.java: Su método run() lee los 7 bytes que le llegan por su stream de entrada y los almacena en las variables “distance”, “ballColor”, “containerColor”, “balls”, “battery”, “reg2” y“reg3”. Llama a distintos métodos de la actividad principal (pasando estas variables como parámetro) para que se muestre al usuario la información en la pantalla del dispositivo Android.
- NXJAndroidActivity.java: En la actividad principal de la aplicación, trabajamos con algunas variables nuevas:
- ImageView img: imagen de una brújula
- Float rotCompass: ángulo de la rotación que había sufrido la imagen
al representar la última medida de la brújula.
Además, hemos añadido el método public void setCompassValue (byte reg2, byte reg3). Éste se encarga de unir los 2 bytes que llegan por el stream de entrada con la medida de la brújula y obtener el float “newRot”, que contiene la lectura de la brújula en grados sexagesimales. Hacemos que la aguja de la brújula rote desde su posición inicial (definida por un ángulo “rotCompass”) hasta la nueva posición tras la medida (hasta un ángulo “rotCompass+newRot”).
Con esta
implementación, ya tenemos completa la monitorización de los sensores de
nuestro robot en tiempo real.
No hay comentarios:
Publicar un comentario