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.

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.

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 Abajo

Controller.ButtonEDown.pressing() — El botón E Abajo

Botón Arriba

Controller.ButtonEUp.pressing() — El botón E Arriba

Botón Abajo

Controller.ButtonFDown.pressing() — El botón F Abajo

BotónFUp

Controller.ButtonFUp.pressing() — El botón F Arriba

BotónL3

Controller.ButtonL3.pressing() — El botón Joystick izquierdo - Solo para el controlador IQ (2.ª generación)

Botón Abajo

Controller.ButtonLDown.pressing() — El botón L Abajo

ButtonLUr

Controller.ButtonLUp.pressing() — El botón L Arriba

BotónR3

Controller.ButtonR3.pressing() — El botón Joystick derecho - Solo para el controlador IQ (2.ª generación)

Botón Abajo

Controller.ButtonRDown.pressing() — El botón R Abajo

Botón R Up

Controller.ButtonRUp.pressing() — El botón R 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

Controller.AxisA.position() — El eje vertical del Joystick izquierdo

Eje B

Controller.AxisB.position() — El eje horizontal del Joystick izquierdo

Eje C

Controller.AxisC.position() — El eje horizontal del Joystick derecho

Eje D

Controller.AxisD.position() — El eje vertical del Joystick derecho

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 Abajo

Controller.ButtonEDown.pressed(callback) — El botón E Abajo

Botón Arriba

Controller.ButtonEUp.pressed(callback) — El botón E Arriba

Botón Abajo

Controller.ButtonFDown.pressed(callback) — El botón F Down

BotónFUp

Controller.ButtonFUp.pressed(callback) — El botón F Up

BotónL3

Controller.ButtonL3.pressed(callback) — El botón Joystick izquierdo - Solo IQ (2.ª generación)

Botón Abajo

Controller.ButtonLDown.pressed(callback) — El botón L Abajo

ButtonLUr

Controller.ButtonLUp.pressed(callback) — El botón L Arriba

BotónR3

Controller.ButtonR3.pressed(callback) — El botón Joystick derecho - Solo IQ (2.ª generación)

Botón Abajo

Controller.ButtonRDown.pressed(callback) — El botón R Abajo

Botón R Up

Controller.ButtonRUp.pressed(callback) — El botón R 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 Abajo

Controller.ButtonEDown.released(callback) — El botón E Abajo

Botón Arriba

Controller.ButtonEUp.released(callback) — El botón E Arriba

Botón Abajo

Controller.ButtonFDown.released(callback) — El botón F Down

BotónFUp

Controller.ButtonFUp.released(callback) — El botón F Up

BotónL3

Controller.ButtonL3.released(callback) — El botón Joystick izquierdo - Solo IQ (2.ª generación)

Botón Abajo

Controller.ButtonLDown.released(callback) — El botón L Down

ButtonLUr

Controller.ButtonLUp.released(callback) — El botón L Arriba

BotónR3

Controller.ButtonR3.released(callback) — El botón Joystick derecho - Solo IQ (2.ª generación)

Botón Abajo

Controller.ButtonRDown.released(callback) — El botón R Abajo

Botón R Up

Controller.ButtonRUp.released(callback) — El botón R 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

Controller.AxisA.changed(callback) — El eje vertical del Joystick izquierdo

Eje B

Controller.AxisB.changed(callback) — El eje horizontal del Joystick izquierdo

Eje C

Controller.AxisC.changed(callback) — El eje horizontal del Joystick derecho

Eje D

Controller.AxisD.changed(callback) — El eje vertical del Joystick derecho

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();
    }
  }
}