Código de controlador personalizado en VEXcode V5

El uso del controlador puede facilitar la conducción y el movimiento del robot para completar una tarea. Sin embargo, existen limitaciones para usar el programa Drive, y dependiendo de la construcción de su robot o la tarea en cuestión, es posible que desee diferentes controles. Codificar el controlador le permite optimizar el controlador para que se adapte mejor a su robot y a la tarea en cuestión. Hay varias formas de codificar el controlador en VEXcode V5. Cada uno tiene sus ventajas y limitaciones, y algunos métodos son más adecuados para ciertas situaciones dependiendo del resultado deseado.

Este artículo le guiará a través de tres opciones diferentes para la codificación personalizada del controlador en VEXcode V5. Cada método se describirá con sus ventajas, limitaciones y un caso de uso de ejemplo para ayudarlo a guiarlo al elegir un método. A los efectos de este artículo, todos los ejemplos de código que se muestran se crearon para el Clawbot. Sin embargo, los mismos conceptos podrían aplicarse a muchas otras compilaciones que se encuentran enbuilds.vex.com y compilaciones personalizadas.

Opción 1: Asignación de botones en la configuración del dispositivo

Esta opción es excelente cuando está utilizando una compilación estándar, como un Speedbot o Clawbot, y desea comenzar a funcionar rápidamente.

Esta opción le permite asignar motores, un tren motriz o grupos de motores a los botones del Controlador en la Configuración del dispositivo. Para obtener más información sobre cómo asignar botones al controlador en la configuración del dispositivo, consulte este artículo.

Diagrama que ilustra los bloques V5 para la programación, mostrando varios tipos de bloques y sus conexiones en un formato visual para ayudar a la comprensión de los tutoriales de codificación basados en bloques.

Resumen de la opción 1: Asignación de botones en la configuración del dispositivo

Ventajas

Limitaciones

Ejemplo de Situación

  • Configuración rápida sin necesidad de codificación
  • Método más simple
  • Fácilmente ajustable
  • Puede asignar motores individuales, un tren de transmisión estándar y grupos de motores a los botones
  • Las asignaciones de botones están limitadas al número de botones en el controlador
  • La transmisión no puede exceder los 4 motores o ser personalizada (solo se admite una transmisión estándar, no una transmisión H, holonómica u otra transmisión personalizada)
  • Manipular una compilación estándar como un Speedbot, Clawbot o una simple modificación de esas compilaciones estándar. Por ejemplo, un Speedbot con una entrada unida a la parte delantera controlada por un grupo motor.
  • Manipular qué botones corresponden a diferentes comportamientos en el robot rápidamente sin mucha codificación

Opción 2: Usar un bucle para siempre

Si está utilizando una compilación personalizada en lugar de una compilación estándar, o desea poder tener más personalización en su Controller, esta opción es buena. Usar un bucle Forever es una gran introducción para crear código personalizado para tu Controller.

Esta opción coloca todas las condiciones para el Controlador, y sus botones asociados, en un bucle Forever. Esto proporciona más flexibilidad, especialmente con diseños de compilación personalizados, pero también requiere cierta experiencia en codificación. Sin embargo, una consideración al usar esta opción es la longitud y complejidad de su proyecto. Cuantas más condiciones se agreguen, más larga será la pila de código. Esto significa que se deben ejecutar varios bloques en orden, y cuando hay muchos bloques, esto puede ralentizar la ejecución del proyecto. La ejecución más lenta del proyecto puede crear un retraso entre presionar los botones del controlador y ver el comportamiento del robot.

El ejemplo específico que se muestra a continuación es una forma en que puede usar un bucle Forever con un robot de diseño personalizado (como un robot con una transmisión personalizada) para conducir el robot y manipular la garra y el brazo para interactuar con los objetos.

Diagrama que ilustra los tutoriales de bloques V5, mostrando varios tipos de bloques y sus conexiones en un diseño claro y organizado para una mejor comprensión de la programación de VEX Robotics.

Descargue el archivo de proyecto VEXcode V5 "Opción 2" >

Explicación del Código de la Opción 2.

Pieza de código

Explicación

Diagrama que ilustra los componentes del bloque V5 y sus funciones en un formato tutorial, mostrando varios tipos de bloques y conexiones con fines educativos.

Se utilizó un Clawbot para este ejemplo de código. Cuando los botones del controlador se utilizan para subir y bajar el brazo, tan pronto como se suelta el botón, debido a la gravedad, el brazo volverá a caer. Configurar tanto el brazo como la garra en "Hold" asegurará que tanto el brazo como la garra permanezcan en su lugar incluso después de que se hayan soltado los botones del controlador.

Diagrama que ilustra los componentes del bloque V5 y sus funcionalidades, utilizado en la sección Tutoriales de bloques de VEX Knowledge Base, que muestra varios tipos de bloques y sus conexiones con fines educativos. Diagrama que ilustra bloques V5 con componentes y conexiones etiquetados, utilizado en tutoriales para comprender la programación de bloques en robótica VEX.

Se utilizó un Clawbot para este ejemplo de código. Cuando los botones del controlador se utilizan para subir y bajar el brazo, tan pronto como se suelta el botón, debido a la gravedad, el brazo volverá a caer. Configurar tanto el brazo como la garra en "Hold" asegurará que tanto el brazo como la garra permanezcan en su lugar incluso después de que se hayan soltado los botones del controlador.

Se utiliza un bucle Forever para comprobar continuamente qué botones se están presionando en el controlador.

Los bloques [Establecer velocidad del motor] se utilizan para establecer la velocidad del motor en la posición actual del controlador a lo largo de los ejes 2 y 3. Esto es el equivalente a poner un coche en marcha. Eso no necesariamente hace que el auto se mueva, solo lo configura.

Cada eje del joystick devuelve un valor entre -100 y +100, y devuelve un valor de cero cuando está centrado. Esto significa que los ejes del joystick, cuando se presionan, equivalen a -100% a 100%. Cuanto más se empujen los ejes hacia 100 o -100, más rápido girará el motor.

El bloque [Spin] se utiliza para mover realmente el motor. Esto es el equivalente a presionar el gas en el coche una vez que se ha establecido la dirección. Esto permite que cada motor sea controlado por uno de los cuatro ejes del controlador.

Diagrama que ilustra bloques V5 para tutoriales de programación, mostrando varios tipos de bloques y sus conexiones, diseñado para mejorar la comprensión de los conceptos de codificación en contextos educativos.

Se utilizó un Clawbot para este ejemplo de código. Cuando los botones del controlador se utilizan para subir y bajar el brazo, tan pronto como se suelta el botón, debido a la gravedad, el brazo volverá a caer. Configurar tanto el brazo como la garra en "Hold" asegurará que tanto el brazo como la garra permanezcan en su lugar incluso después de que se hayan soltado los botones del controlador.

El bloque [If then if then else] se utiliza para asignar ciertos comportamientos a los botones que se presionan o liberan en el Controlador. En esta sección del código, las condiciones establecidas son si se presionan los botones Arriba o Abajo. Si es así, ocurrirán ciertos comportamientos, como levantar y bajar el brazo. También está la parte else de la condición, si no se presiona ninguno de los botones, el brazo está configurado para dejar de moverse.

Tenga en cuenta que la siguiente sección del código en el proyecto para la Garra sigue la misma explicación.

Resumen de la opción 2: usar un bucle para siempre

Ventajas

Limitaciones

Ejemplo de Situación

  • Puede acomodar construcciones personalizadas, especialmente transmisiones con más de 4 motores
  • Puede asignar múltiples comportamientos a un solo botón
  • Puede asignar comportamientos a diferentes ejes en el controlador (a diferencia de las únicas opciones de Left Arcade, Right Arcade, Split Arcade y Tank Drive en la configuración del dispositivo)
  • Requiere cierta cantidad de conocimientos de codificación (condicionales, bucles y conocimiento de los botones/joysticks en el controlador)
  • Posibilidad de una ejecución más lenta del proyecto o retraso en el tiempo de respuesta del botón. Dado que todos los comandos están contenidos dentro de un solo bucle Forever, la ejecución del código podría ejecutarse lentamente dependiendo de las condiciones establecidas y la longitud del código.
  • Uso del controlador con un robot personalizado, especialmente con un tren de transmisión no estándar
  • Al querer asignar varios comportamientos a un solo botón. Por ejemplo, cuando se presiona el botón Arriba, la garra puede abrirse, avanzar y luego cerrarse alrededor de un objeto.

Opción 3: Uso de eventos

Si desea mucha personalización para su controlador, el uso de eventos es la mejor opción para usted. Una pulsación de botón puede desencadenar múltiples comportamientos del robot, como presionar un botón para abrir la garra, levantar el brazo y avanzar una distancia establecida. Intentar codificar múltiples comportamientos por botón dentro de un bucle Forever haría que la ejecución del proyecto se ralentizara drásticamente; el uso de Eventos le permite hacerlo de manera más efectiva.

Esta opción utiliza Eventos para dividir el flujo del proyecto. Esto es similar a usar un bucle Forever, pero permite que el código esté más organizado, de modo que la ejecución del botón tenga un tiempo de respuesta más rápido. Un tiempo de respuesta más rápido significa que no verá un retraso entre presionar los botones del controlador y ver el comportamiento del robot. Este ejemplo muestra los mismos comportamientos que el proyecto anterior, pero utilizando Eventos en lugar de Forever Loop.

Ilustración de bloques V5 utilizados en tutoriales, mostrando varios tipos de bloques y sus conexiones, demostrando cómo construir y programar con la robótica VEX V5.

Descargue el archivo de proyecto VEXcode V5 "Opción 3" >

Explicación del Código de la Opción 3.

Pieza de código

Explicación

Diagrama que ilustra varios bloques V5 utilizados en tutoriales de robótica, mostrando sus funciones y conexiones con fines educativos.

Se utilizó un Clawbot para este ejemplo de código. Cuando los botones del controlador se utilizan para subir y bajar el brazo, tan pronto como se suelta el botón, debido a la gravedad, el brazo volverá a caer. Configurar tanto el brazo como la garra en "Hold" asegurará que tanto el brazo como la garra permanezcan en su lugar incluso después de que se hayan soltado los botones del controlador.

Diagrama que ilustra los bloques V5 en un tutorial de robótica, mostrando varios tipos de bloques y sus conexiones para las tareas de programación. Diagrama que ilustra bloques V5 con componentes y conexiones etiquetados, utilizado en tutoriales para comprender la programación de bloques en robótica VEX.

Se utilizó un Clawbot para este ejemplo de código. Cuando los botones del controlador se utilizan para subir y bajar el brazo, tan pronto como se suelta el botón, debido a la gravedad, el brazo volverá a caer. Configurar tanto el brazo como la garra en "Hold" asegurará que tanto el brazo como la garra permanezcan en su lugar incluso después de que se hayan soltado los botones del controlador.

Los bloques de {When controller axis} eventos se utilizan para desencadenar ciertos comportamientos cuando se cambia uno de los cuatro ejes del controlador mediante los joysticks.

Los bloques [Establecer velocidad del motor] se utilizan para establecer la velocidad del motor en la posición actual del controlador a lo largo de los ejes A y D. Esto es el equivalente a poner un coche en marcha. Eso no necesariamente hace que el auto se mueva, solo lo configura.

Cada eje del joystick devuelve un valor entre -100 y +100, y devuelve un valor de cero cuando está centrado. Esto significa que los ejes del joystick, cuando se presionan, equivalen a -100% a 100%. Cuanto más se empujen los ejes hacia 100 o -100, más rápido girará el motor.

El bloque [Spin] se utiliza para mover realmente el motor. Esto es el equivalente a presionar el gas en el coche una vez que se ha establecido la dirección. Esto permite que cada motor sea controlado por uno de los cuatro ejes del controlador.

Diagrama que ilustra los bloques V5 utilizados en los tutoriales de programación, mostrando varios tipos de bloques y sus funciones dentro del sistema VEX Robotics.

Se utilizó un Clawbot para este ejemplo de código. Cuando los botones del controlador se utilizan para subir y bajar el brazo, tan pronto como se suelta el botón, debido a la gravedad, el brazo volverá a caer. Configurar tanto el brazo como la garra en "Hold" asegurará que tanto el brazo como la garra permanezcan en su lugar incluso después de que se hayan soltado los botones del controlador.

Los bloques de {When controller axis} eventos se utilizan para asignar ciertos comportamientos a los botones que se presionan o liberan en el Controlador. En esta sección del código, las condiciones establecidas son si se presionan los botones Arriba o Abajo. Si es así, ocurrirán ciertos comportamientos, como levantar, bajar o detenerse el brazo.

Tenga en cuenta que la última sección del código en el proyecto para la Garra sigue la misma explicación.

Resumen de la opción 3: Uso de eventos

Ventajas

Limitaciones

Ejemplo de Situación

  • Puede acomodar construcciones personalizadas, especialmente transmisiones con más de 4 motores
  • Puede asignar múltiples comportamientos a un solo botón
  • Puede asignar comportamientos a diferentes ejes en el controlador (a diferencia de las únicas opciones de Left Arcade, Right Arcade, Split Arcade y Tank Drive en la configuración del dispositivo)
  • Ejecución de código más rápida y, por lo tanto, capacidad de respuesta del botón (ya que cada condición se solicita por separado y no se incrusta en una sola pila de código)
  • Requiere el mayor conocimiento de codificación de las opciones (condicionales, bucles, eventos y conocimiento de los botones/joysticks en el controlador)
  • Uso del controlador con un robot personalizado, especialmente con un tren de transmisión no estándar
  • Cuando se desea asignar varios comportamientos a un solo botón sin retraso. Por ejemplo, cuando se presiona el botón Arriba, la garra puede abrirse, avanzar y luego cerrarse alrededor de un objeto.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: