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.
Resumen de la opción 1: Asignación de botones en la configuración del dispositivo
|
Ventajas |
Limitaciones |
Ejemplo de Situació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.
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 |
|---|---|
|
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 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. |
|
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 |
|---|---|---|
|
|
|
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.
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 |
|---|---|
|
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 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. |
|
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 |
|---|---|---|
|
|
|