El uso del controlador puede hacer que sea más fácil conducir y mover su robot para completar una tarea. Sin embargo, existen limitaciones en el uso del programa Drive y, según la construcción de su robot o la tarea en cuestión, es posible que desee controles diferentes. Codificar el controlador le permite optimizarlo para que se ajuste mejor a su robot y a la tarea en cuestión. Hay varias formas de codificar el controlador en VEXcode EXP. Cada uno tiene sus ventajas y limitaciones, y algunos métodos se adaptan mejor a determinadas situaciones según el resultado deseado.
Este artículo le guiará a través de tres opciones diferentes para codificar de forma personalizada el controlador en VEXcode EXP. Cada método se describirá con sus ventajas, limitaciones y un caso de uso de ejemplo para guiarlo a la hora de elegir un método. A los efectos de este artículo, todos los ejemplos de código que se muestran se crearon para Clawbot. Sin embargo, los mismos conceptos podrían aplicarse a muchas otras compilaciones que se encuentran en builds.vex.comy a compilaciones personalizadas.
Opción 1: Asignar botones en la configuración del dispositivo
Esta opción es excelente cuando utiliza una versión estándar, como BaseBot o Clawbot, y desea comenzar a utilizarla rápidamente.
Esta opción le permite asignar motores, una transmisión o grupos de motores a 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 |
Situación de ejemplo |
|
|
|
Opción 2: usar un bucle permanente
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 Controlador, esta opción es una buena opción. Usar un bucle Forever es una excelente introducción para crear código personalizado para su controlador.
Esta opción coloca todas las condiciones para el controlador y sus botones asociados en un bucle permanente. 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 utilizar esta opción es la duración y complejidad de su proyecto. Cuantas más condiciones se agreguen, más larga será la pila de códigos. Esto significa que se deben ejecutar varios bloques en orden y, cuando hay muchos bloques, esto puede ralentizar la ejecución del proyecto. Una 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 utilizar 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 EXP "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 "retener" garantizará 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 "retener" garantizará 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 configurar la velocidad del motor en la posición actual del controlador a lo largo de los ejes 2 y 3. Esto equivale a poner un coche en marcha. Eso no necesariamente hace que el auto se mueva, simplemente lo fija. Cada eje del joystick devuelve un valor entre -100 y +100 y devuelve un valor de cero cuando está centrado. Esto significa entonces 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. Luego, el bloque [Spin] se utiliza para mover el motor. Esto equivale a pisar el acelerador del coche una vez fijada 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 "retener" garantizará 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 else if then else] se utiliza para asignar ciertos comportamientos a los botones que se presionan o sueltan en el controlador. En esta sección de código, las condiciones establecidas son si se presionan los botones Arriba o Abajo. Si es así, se producirán ciertos comportamientos, como subir y bajar el brazo. También existe la otra parte de la condición: si no se presiona ningún botón, el brazo dejará de moverse. Tenga en cuenta que la siguiente sección de código en el proyecto de Claw sigue la misma explicación. |
Resumen de la opción 2: uso de un bucle Forever
Ventajas |
Limitaciones |
Situación de ejemplo |
|
|
|
Opción 3: usar eventos
Si desea mucha personalización en su controlador, usar eventos es la mejor opción para usted. Presionar un 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 determinada. Intentar codificar múltiples comportamientos por botón dentro de un bucle Forever haría que la ejecución del proyecto se ralentice dramáticamente; 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 al uso de 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 EXP "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 "retener" garantizará 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 "retener" garantizará que tanto el brazo como la garra permanezcan en su lugar incluso después de que se hayan soltado los botones del controlador. {When controller axis} Los bloques de eventos se utilizan para activar ciertos comportamientos cuando uno de los cuatro ejes del controlador se cambia mediante el uso de los joysticks. Los bloques [Establecer velocidad del motor] se utilizan para configurar la velocidad del motor en la posición actual del controlador a lo largo de los ejes A y D. Esto equivale a poner un coche en marcha. Eso no necesariamente hace que el auto se mueva, simplemente lo fija. Cada eje del joystick devuelve un valor entre -100 y +100 y devuelve un valor de cero cuando está centrado. Esto significa entonces 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. Luego, el bloque [Spin] se utiliza para mover el motor. Esto equivale a pisar el acelerador del coche una vez fijada 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 "retener" garantizará que tanto el brazo como la garra permanezcan en su lugar incluso después de que se hayan soltado los botones del controlador. {When controller axis} Los bloques de eventos se utilizan para asignar ciertos comportamientos a los botones que se presionan o sueltan en el controlador. En esta sección de código, las condiciones establecidas son si se presionan los botones Arriba o Abajo. Si es así, se producirán ciertos comportamientos, como levantar, bajar o detener el brazo. Tenga en cuenta que la última sección de código del proyecto de Claw sigue la misma explicación. |
Resumen de la opción 3: uso de eventos
Ventajas |
Limitaciones |
Situación de ejemplo |
|
|
|