controlador#
Introducción#
La API de controlador para VEX IQ (2.ª generación) proporciona métodos para la comunicación entre un controlador VEX IQ (2.ª generación) y un cerebro VEX IQ (2.ª generación). Esto permite que el cerebro detecte diferentes botones del controlador, así como cambios en los ejes del joystick.
A continuación se muestra una lista de los métodos disponibles:
Acciones: habilitar o deshabilitar el controlador.
RemoteControlCodeEnabled – Habilita o deshabilita las acciones configuradas del controlador.
Getters: devuelven valores de los joysticks y botones del controlador.
pressing – Devuelve si se está presionando el botón especificado.
posición – Devuelve la posición del eje especificado del joystick.
Devolución de llamada: interactúa con el controlador a través de métodos de devolución de llamada.
presionado – Llama a una función cuando se presiona el botón especificado.
liberado – Llama a una función cuando se suelta el botón especificado.
cambiado – Llama a una función cuando cambia el eje del joystick.
Constructores: inicializan manualmente el controlador.
controlador – Crea un controlador.
Comportamiento#
Código de control remoto habilitado#
RemoteControlCodeEnabled
es una variable que puede configurarse como un valor booleano que habilita o deshabilita las acciones configuradas por el controlador desde el menú Dispositivos. El controlador está habilitado por defecto. Puede configurarse como:
true
— Habilita las acciones configuradas del controlador.false
— Deshabilitar las acciones configuradas del controlador.
Uso:
RemoteControlCodeEnabled = false
// Drive with controller after pressing a button
RemoteControlCodeEnabled = false;
Drivetrain.turn(right);
while (true){
if(Controller.ButtonEUp.pressing()){
Drivetrain.stop();
RemoteControlCodeEnabled = true;
break;
}
}
Brain.Screen.print("Controller Active");
Captadores#
prensado#
pressing
devuelve un entero que indica si un botón específico del controlador está presionado. Este método debe llamarse en un objeto de botón específico, como ButtonEDown
(consulte la lista completa de objetos de botón a continuación).
1
- Se está presionando el botón especificado.0
- No se está presionando el botón especificado.
Uso:
Se puede usar uno de los diez objetos de botón disponibles con este método, como se muestra a continuación:
Botón |
Dominio |
---|---|
|
|
Botón Arriba |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Parámetros |
Descripción |
---|---|
Este método no tiene parámetros. |
// Drive forward when a button is pressed
while (true){
if(Controller.ButtonEUp.pressing()){
Drivetrain.drive(forward);
}
else{
Drivetrain.stop();
}
}
posición#
position
devuelve la posición del eje especificado del joystick como un entero entre -100 y 100, que representa un porcentaje. Este método debe llamarse en un objeto de eje específico, como AxisA
(consulte la lista completa de objetos de eje a continuación).
Uso:
Se puede utilizar uno de los cuatro ejes disponibles con este método, como se muestra a continuación:
Eje |
Dominio |
---|---|
Eje A |
|
Eje B |
|
|
|
|
|
Parámetros |
Descripción |
---|---|
Este método no tiene parámetros. |
// Turn depending on the joystick position
while (true){
if (Controller.AxisC.position() < 0){
Drivetrain.turn(left);
}
else if (Controller.AxisC.position() > 0){
Drivetrain.turn(right);
}
else{
Drivetrain.stop();
}
}
Llamar de vuelta#
apretado#
pressed
registra una función que se llamará al presionar un botón específico del controlador. Este método debe llamarse en un objeto de botón específico, como ButtonEDown
(ver la lista completa de objetos de botón a continuación).
Uso:
Se puede usar uno de los diez objetos de botón disponibles con este método, como se muestra a continuación:
Botón |
Dominio |
---|---|
|
|
Botón Arriba |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Parámetro |
Descripción |
---|---|
llamar de vuelta |
Una función que se llamará cuando se presione el botón. |
//Turn when a button is pressed
void buttonPressed(){
Drivetrain.turnFor(right, 90, degrees);
}
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Check for EUp to be pressed
Controller.ButtonEUp.pressed(buttonPressed);
}
liberado#
released
registra una función que se llamará al soltar un botón específico del controlador. Este método debe llamarse en un objeto de botón específico, como ButtonEDown
(ver la lista completa de objetos de botón a continuación).
Uso:
Se puede usar uno de los diez objetos de botón disponibles con este método, como se muestra a continuación:
Botón |
Dominio |
---|---|
|
|
Botón Arriba |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Parámetro |
Descripción |
---|---|
llamar de vuelta |
Una función que se llamará cuando se suelte el botón |
//Turn when a button is pressed
void buttonReleased(){
Drivetrain.turnFor(left, 90, degrees);
}
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Check for EUp to be released
Controller.ButtonEUp.released(buttonReleased);
}
cambió#
changed
registra una función que se llamará cuando cambie la posición del joystick. Este método debe llamarse en un objeto de eje específico, como AxisA
(consulte la lista completa de objetos de eje a continuación).
Uso:
Se puede utilizar uno de los cuatro ejes disponibles con este método, como se muestra a continuación:
Eje |
Dominio |
---|---|
Eje A |
|
Eje B |
|
|
|
|
|
Parámetros |
Descripción |
---|---|
llamar de vuelta |
Una función que se define previamente para ejecutarse cuando cambia el valor del eje. |
// Function to drive when the joystick is moved
void moveJoystick(){
Drivetrain.driveFor(forward, 200, mm);
}
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Call when AxisA changes
Controller.AxisA.changed(moveJoystick);
}
Constructores#
controlador#
controller
crea un objeto controlador.
Uso:
controlador()
Parámetro |
Descripción |
---|---|
Este método no tiene parámetros. |
// Create a new object "Controller" with the controller class.
controller Controller = controller();
int main() {
// Initializing Robot Configuration. DO NOT REMOVE!
vexcodeInit();
// Move forward and backward with controller buttons
while (true){
if(Controller.ButtonEUp.pressing()){
Drivetrain.drive(forward);
}
else if(Controller.ButtonEDown.pressing()){
Drivetrain.drive(reverse);
}
else{
Drivetrain.stop();
}
}
}