top of page
  • PI - RobotSubmarino

Creación del Código de Bloques del Lector de Sensores del Celular

Luego de explicar, el diseño de la interfaz de la aplicacion "SensorReader", ahora toca explicar la parte de los bloques donde se relacionan los elementos de la interfaz.

Figura 1: Codigo de bloques

Seguidamente, se explicará los componentes más importantes del código de bloques de esta aplicación. Comenzaremos con la configuración del reloj, el cual se usa como temporizador de la actualización de los datos. Inicializamos 3 variables 'MillsPrevious' a 0, 'MillsCurrent' a 0 y 'delayMills' a 200. Para luego, con la ayuda del 'when Clock1.Timer' y un 'if then', se fija que cada 2 segundos se 'llama' a las funciones 'Orientación', 'Giroscopio', 'Acelerómetro' y 'Magnetómetro'.



Bloques del reloj temporizador

Las funciones que se mencionaron en la anterior parte ('Orientación', 'Giroscopio', 'Acelerómetro' y 'Magnetómetro'), son muy similares entre ellas, solo basta con entender un código de bloques implementado para una de ellas y replicarlo con las demás. En la Fig. 10, el procedimiento comienza con inicializar los valores, tenemos 'Decimales' con 4, ya que utilizaremos únicamente los primeros 4 decimales de los valores de los sensores para asegurar que información relevante no sea perdida. Luego, tenemos 'S-Azimuth', 'S-Pitch' y 'S-Roll', todas en 0, estas variables son los 'ejes' en el caso del sensor de Orientación.

Inicializar las variables

Por último, inicializamos listas vacías 'S-O-A' (Azimuth), 'S-O-P' (Pitch) y 'S-O-R' (Roll) donde se almacenarán los datos individuales obtenidos del sensor. El siguiente bloque es 'when OrientationSensor.OrientationChanged', es cual se activa cada vez que la orientación cambia, es decir, constantemente ya que estos sensores son muy sensibles incluso cuando el celular esté estático. Se asigna el 'azimuth' reducido a 4 decimales a la variables 'S-Azimuth', se replica para el 'pitch' y el 'roll'.


Figura 2: Bloques de Sensor de Orientación

Se asigna el valor de la variable 'S-Azimuth' al label correspondiente que se encuentra vacío (como se mostro en el diseño de la interfaz) y asi para el 'S-Pitch' y 'S-Roll'. Estas variables 'singulares' se añaden a su respectiva lista creada ('S-O-A', 'S-O-P' y 'S-O-R'). Para concluir, se añade un bloque de Firebase el cual almacena el valor del sensor cierta etiqueta, por ejemplo, el valor 'S-Azimuth' en la etiqueta 'Sensor-Orientacion/S-O-Azimuth'. El orden de los valores en la base de datos 'Firebase', se explicara con mayor detenimiento en la sección de Firebase.


Para completar la aplicación, se procede a realizar el mismo código de bloques de Figura 2 para cada sensor requerido. Como se puede apreciar en la Figura 1, donde se ve el código de bloque completo para la aplicación "SensorReader". Adicionalmente, se agregan algunos elementos estéticos como por ejemplo, colores a los botones dependiendo de su estado. Este es el caso del botón 'Parar', el cual comienza de color rojo y cuando es presionado, es decir, los valores dejan de actualizarse, este cambia de color a verde y su texto cambia a 'Continuar'.


Figura 3: Aplicación "SensorReader"

En la Figura , se puede apreciar la aplicación en funcionamiento, con sus títulos para cada sensor y los valores reducidos a 4 decimales. El botón de 'Parar' indica que en el momento de la imagen, los valores se estaban actualizando cada 2 segundos. Asimismo, las listas de Datos son visible y se puede apreciar que contienen información.



13 visualizaciones0 comentarios

Entradas recientes

Ver todo
Publicar: Blog2_Post
bottom of page