Clase BarraInfo para Processing

He creado una clase llamada BarraInfo para que podais añadir a vuestros proyectos de Processing. La clase sirve para crear barras de información, como las que habeis visto en la telemetría para mostrar el PWM de los motores o el nivel de la batería.

La ventaja de usar esta clase (y cualquier otra) es que os evitais tener que crear el código de cero porque ya está hecho, podeis usarla en todos los proyectos de Processing que hagais, podeis tener varias barras de información en la pantalla y se puede configurar a medida.

A continuación os pongo el código fuente de la clase:

Para usarla os voy a poner un ejemplo de cómo mostrar el PWM asignado a un motor.

Lo primero es copiar el código fuente que he puesto más arriba en vuestro proyecto, preferentemente al final.

Lo segundo es crear una variable global del tipo BarraInfo.

Lo tercero es instanciar la clase para crear un objeto en el método setup de vuestro sketch.

Después, y dentro del mismo método setup inicializamos las variables de la clase. Dado que las variables de las clases de Processing son públicas y no se admiten variables de tipo privado, he preferido acceder a ellas directamente sin métodos get/set:

Establecemos el valor de inicio y final que podrá tener la barra, en el PWM es de 0 a 255, en una batería Lipo sería de 0 a 8,4.

Establecemos el color de las lineas (que comprende las muescas y el texto asociado a ellas) y el color de la barra.

Establecemos la posición x e y de nuestra ventana donde se mostrará la barra de información.

Establecemos la anchura de las muescas y de la barra (cada una) y la altura del conjunto.

Establecemos cada cuantos píxeles se dibuja una muesca y cada cuantos píxeles se muestra un número de referencia.

Establecemos la fuente que previamente habremos creado en el menú Tools/Create Font… de Processing y la desplazamos en su eje x e y para que encaje bien en las muescas.

Establecemos el número mínimo de enteros que apareceran (rellenando con ceros por la izquierda si no llega) y el número de decimales (-1 si no queremos que salgan) de los números de referencia.

Finalmente en el método draw se debe establecer el valor que debe tener la barra y pintarlo. He puesto un random para que pueda apreciar el movimiento.

Así es como quedaría el código fuente:

Y así el resultado:

9 comentarios en “Clase BarraInfo para Processing

  1. Jorge Autor

    Me gusta como te ha quedado, y la idea a seguir de ir creando objetos individuales para cada elemento hardware que reutilizar en distintos interfaz puede funcionar. Integrar elementos físicos hardware en el pc.

    Por cierto le has sumado un voltio de más a la lipo 🙂

    Buen primer objeto y entrada, me parece muy atractivo este proyecto.

    Responder
  2. Oscar Autor

    Sólo quedarían dos clases por crear para parecerse a lo que tengo: la que te muestra los sensores sobre la linea y la que la te muestra el error y el PD en el tiempo.

    Lo de la LiPo es porque las de 2 celdas se pueden cargar como máximo a ese valor (la carga máxima de una celda es de 4.2V).

    Pronto tendremos nuestro sistema de telemetría made in C.I.R.E 🙂

    Responder
  3. Jorge Autor

    Cierto lo de la lipo, no lo había pensado.

    Tenemos que mirar bien que es lo que queremos medir con el interfaz en los velocistas, para poder comparar entre distintos ajustes, tengo en la mesa un montón de apuntes que mirarme del tema pero todavía no he sido capaz de empezar…

    Lo primero que se me ocurre es un sumatorio de los valores absolutos de los errores para poder comparar entre ajustes, y valores máximos y mínimos, pero bueno ya hablaremos el tema en el foro que a Raúl le gustan estas cosas del control.

    De momento voy a meter estas barras en mi ventana de processing y creo que les voy a añadir arriba un campo de texto, para poner por ejemplo «motor derecho», y abajo el valor numérico del gráfico.

    Responder
  4. Oscar

    La verdad es que se pueden medir multitud de parámetros (incluso unos dentro de otros).

    Lo que comentas de los valores absolutos, como se puede crear un fichero desde Processing, luego se puede importar en una hoja de excel y ver lo resultados e incluso hacer gráficas. Lo bueno de la telemetría es que da igual que sea un velocista, un micromouse, un quadrator o o que sea, que siempre podrás obtener información de lo que está pasando en cada momento.

    Responder
  5. Raúl

    Chulísimo, este proyecto aportará mucha flexibilidad y como herramienta de ajuste o análisis la propuesta es estupenda ya es hora de que regulemos sin dar palos de ciego.

    Excelente entrada.

    Responder
  6. David Autor

    waw, es bestial oscar, te has superado, enhorabuena

    pero hay un problema…como haces que se interconecten unos con otros? podria via usb interconectarlos y probarlo?

    saludos

    Responder
  7. David Autor

    si, por ejemplo, enchufar el robby al usb y al ordenador y poder medir los parametros internos como pwm de los motores, sensores analogicos…

    Responder
  8. Oscar

    Sería todo como comunicaciones serie.
    El el robby haces que envié los parámetros por usb
    En processing abres el puerto serie del usb, recibes los datos y los guardas en las variables de tu programa para que posteriormente se pinte.
    En este artículo sería la variable valor donde tendrías que guardar el dato que has recibido del robby

    Responder

Responder a Oscar Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *