Skip to content

Tabla de funciones

Este es el objeto con el que podemos obtener toda la información del controlador

funciónparámetrossalidaExplicación
__init__()port="COM3", clk=115200, n_data=10, name="Clau"Instancia inicializadaInicializa la comunicación serie con el sensor, variables internas (aceleración, giroscopio y cuaternión) y parámetros de configuración. Lanza excepción si n_data < 10.
calibrate()NoneÉxito: {"angle": self.angle_wijk, "status": 200}
Error: {"status": 500}
Envía el byte '1' al microcontrolador para resetear la referencia. Espera una respuesta válida del puerto serie. Si la recibe correctamente devuelve estado 200; si falla tras varios intentos devuelve 500.
collect_data()Nonedict con datos procesados o NoneLee una línea del puerto serie, valida longitud, convierte a float y actualiza los datos internos. Si MQTT está activo publica los datos. Devuelve None si la línea está incompleta o hay error.
init_mqtt()host, port, topic, client_id, keepalive, username, passwordtopic final utilizadoInicializa conexión MQTT con QoS 0. Configura credenciales y genera el tópico final como /topic/name. Activa mqttStatus.
disconect_mqtt()NoneTrue o FalseDesconecta el cliente MQTT si está activo y actualiza el estado interno.
publish()data=dictResultado de client.publish()Convierte el diccionario a JSON y lo publica en el tópico configurado con QoS 0.
set_name()nameNoneModifica el nombre del dispositivo (usado en el tópico MQTT).
set_clk()clkNuevo clkCambia la velocidad de comunicación serie. Reinicia el puerto con la nueva configuración.
set_port()portNuevo portCambia el puerto serie y reinicia la conexión.
set_n_data()n_dataNuevo n_dataCambia el número mínimo de datos esperados por lectura. Lanza excepción si n_data < 10.
set_shake_umbral()umbralNuevo umbralDefine el umbral de aceleración para detección de sacudida.
get_quaternion()Nonenp.array([qx,qy,qz,qw])Devuelve el cuaternión actual del sensor.
get_data()Nonedict con puerto, clock, aceleración, giroscopio y cuaterniónDevuelve el estado completo actual del objeto.
get_shake()None{"shakeStatus": True, "shakeMagnitude": val} o {"shakeStatus": False}Calcula la norma del vector aceleración y la compara con el umbral definido para detectar sacudida.
get_virtual_joystick()max_angle_deg=30np.array([x,y]) rango [-1,1]Convierte el cuaternión a ángulos de Euler (roll y pitch), los normaliza respecto a max_angle_deg y los satura en el rango [-1,1] para simular un joystick virtual 2D.

Este método nos permite ver un ejemplo visual muy básico para comprobar el funcionamiento

funciónparámetrossalidaExplicación
cube_view()port="COM5" logs=FalseNoneEjecuta un programa gráfico de un cubo que gira con respecto al cuaternion del controlador. Se puede definir si queremos ver los cuaterniones en la terminal o no con el parámetro logs