Controlador#

Introducción#

El controlador VEX IQ (2.ª generación) cuenta con botones y dos joysticks. Los métodos del controlador permiten comprobar si se han pulsado los botones, leer el movimiento de los joysticks, activar o desactivar las acciones configuradas o ejecutar funciones cuando se producen eventos en el controlador.

El módulo IQ (2.ª generación) puede conectarse a un controlador IQ (2.ª generación) o a un controlador IQ (1.ª generación). Un controlador IQ (1.ª generación) debe tener instalada una radio inteligente azul.

Configured controller actions are controller behaviors set in the Devices menu. Use remote_control_code_enabled to temporarily enable or disable those configured actions during a project.

This page uses controller as the example controller name. Replace it with your own configured name as needed.

A continuación se muestra una lista de todos los métodos disponibles:

Acción: Activa o desactiva las acciones del controlador configuradas.

Obtenedores: Leen el estado de los botones y la posición del joystick.

  • .pressing — Returns whether a specified button is being pressed.

  • .position — Returns the position of a specified joystick axis.

Funciones de devolución de llamada: ejecutan funciones cuando cambia la entrada del controlador.

  • .pressed — Runs a function when a specified button is pressed.

  • .released — Runs a function when a specified button is released.

  • .changed — Runs a function when the joystick’s position changes along a specified axis.

Constructor: crea manualmente un objeto Controller.

Acción#

remote_control_code_enabled#

remote_control_code_enabled is a variable that enables or disables controller actions configured in the Devices menu. Controller configured actions are enabled by default.

Usage:
remote_control_code_enabled = state

Valor

Descripción

True

Habilita las acciones configuradas por el controlador.

False

Deshabilita las acciones configuradas por el controlador.

# Use custom controller code, then re-enable configured actions
remote_control_code_enabled = False

while True:
    if controller.axisA.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller.axisA.position() < 0:
        drivetrain.drive(REVERSE)
    elif controller.buttonEUp.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

Captadores#

.pressing#

.pressing returns whether a specific button on the controller is currently being pressed. This method must be called on a specific button object, such as controller.buttonEUp.

  • True — The specified button is being pressed.

  • False — The specified button is not being pressed.

Uso:
Se puede utilizar uno de los objetos de botón disponibles con este método:

Vista frontal y posterior del mando IQ de segunda generación con todos los botones resaltados en amarillo. La superficie del mando contiene dos botones de joystick en las esquinas superior izquierda y derecha, con E arriba y abajo debajo del joystick izquierdo y F arriba y abajo debajo del derecho. En la parte posterior del mando se encuentran L arriba y abajo y R arriba y abajo en los lados izquierdo y derecho respectivamente.

Botón

Dominio

buttonEDown

controller.buttonEDown.pressing() — The E ▼ button

buttonEUp

controller.buttonEUp.pressing() — The E ▲ button

buttonFDown

controller.buttonFDown.pressing() — The F ▼ button

buttonFUp

controller.buttonFUp.pressing() — The F ▲ button

buttonL3

controller.buttonL3.pressing() — The Left Joystick button, IQ (2nd gen) Controller only

buttonLDown

controller.buttonLDown.pressing() — The L ▼ button

buttonLUp

controller.buttonLUp.pressing() — The L ▲ button

buttonR3

controller.buttonR3.pressing() — The Right Joystick button, IQ (2nd gen) Controller only

buttonRDown

controller.buttonRDown.pressing() — The R ▼ button

buttonRUp

controller.buttonRUp.pressing() — The R ▲ button

Parámetros

Descripción

Este método no tiene parámetros.

# Turn right while E Up is held
while True:
    if controller.buttonEUp.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

.position returns the position of a joystick axis as a number from -100 to 100.

This method must be called on a specific axis object, such as controller.axisA.

Uso:
Se puede utilizar uno de los objetos de eje disponibles con este método:

Controlador IQ de segunda generación con los cuatro ejes del joystick resaltados. En el joystick izquierdo, el eje A es vertical y el eje B es horizontal. En el joystick derecho, el eje C es horizontal y el eje D es vertical.

Eje

Dominio

axisA

controller.axisA.position() — The left joystick’s vertical axis

axisB

controller.axisB.position() — The left joystick’s horizontal axis

axisC

controller.axisC.position() — The right joystick’s horizontal axis

axisD

controller.axisD.position() — The right joystick’s vertical axis

Parámetros

Descripción

Este método no tiene parámetros.

# Turn with the left joystick
remote_control_code_enabled = False

while True:
    if controller.axisB.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller.axisB.position() < -10:
        drivetrain.turn(LEFT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

Devoluciones de llamada#

.pressed#

.pressed runs a function when the specified button is pressed. Once it is used, the function will run automatically each time that button is pressed.

Uso:
Se puede utilizar uno de los objetos de botón disponibles con este método:

Vista frontal y posterior del mando IQ de segunda generación con todos los botones resaltados en amarillo. La superficie del mando contiene dos botones de joystick en las esquinas superior izquierda y derecha, con E arriba y abajo debajo del joystick izquierdo y F arriba y abajo debajo del derecho. En la parte posterior del mando se encuentran L arriba y abajo y R arriba y abajo en los lados izquierdo y derecho respectivamente.

Botón

Dominio

buttonEDown

controller.buttonEDown.pressed(callback, arg) — The E ▼ button

buttonEUp

controller.buttonEUp.pressed(callback, arg) — The E ▲ button

buttonFDown

controller.buttonFDown.pressed(callback, arg) — The F ▼ button

buttonFUp

controller.buttonFUp.pressed(callback, arg) — The F ▲ button

buttonL3

controller.buttonL3.pressed(callback, arg) — The Left Joystick button, IQ (2nd gen) Controller only

buttonLDown

controller.buttonLDown.pressed(callback, arg) — The L ▼ button

buttonLUp

controller.buttonLUp.pressed(callback, arg) — The L ▲ button

buttonR3

controller.buttonR3.pressed(callback, arg) — The Right Joystick button, IQ (2nd gen) Controller only

buttonRDown

controller.buttonRDown.pressed(callback, arg) — The R ▼ button

buttonRUp

controller.buttonRUp.pressed(callback, arg) — The R ▲ button

Parámetro

Descripción

callback

Una función definida previamente para ejecutarse cada vez que se presione el botón especificado.

arg

Opcional. Una tupla que contiene los argumentos que se pasarán a la función de devolución de llamada. Consulte Uso de eventos con parámetros para obtener más información.

# Drive forward when E Up is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 100, MM)

controller.buttonEUp.pressed(drive_forward)

.released#

.released runs a function when the specified button is released. Once it is used, the function will run automatically each time that button is released.

Uso:
Se puede utilizar uno de los objetos de botón disponibles con este método:

Vista frontal y posterior del mando IQ de segunda generación con todos los botones resaltados en amarillo. La superficie del mando contiene dos botones de joystick en las esquinas superior izquierda y derecha, con E arriba y abajo debajo del joystick izquierdo y F arriba y abajo debajo del derecho. En la parte posterior del mando se encuentran L arriba y abajo y R arriba y abajo en los lados izquierdo y derecho respectivamente.

Botón

Dominio

buttonEDown

controller.buttonEDown.released(callback, arg) — The E ▼ button

buttonEUp

controller.buttonEUp.released(callback, arg) — The E ▲ button

buttonFDown

controller.buttonFDown.released(callback, arg) — The F ▼ button

buttonFUp

controller.buttonFUp.released(callback, arg) — The F ▲ button

buttonL3

controller.buttonL3.released(callback, arg) — The Left Joystick button, IQ (2nd gen) Controller only

buttonLDown

controller.buttonLDown.released(callback, arg) — The L ▼ button

buttonLUp

controller.buttonLUp.released(callback, arg) — The L ▲ button

buttonR3

controller.buttonR3.released(callback, arg) — The Right Joystick button, IQ (2nd gen) Controller only

buttonRDown

controller.buttonRDown.released(callback, arg) — The R ▼ button

buttonRUp

controller.buttonRUp.released(callback, arg) — The R ▲ button

Parámetro

Descripción

callback

Una función definida previamente para ejecutarse cada vez que se suelte el botón especificado.

arg

Opcional. Una tupla que contiene los argumentos que se pasarán a la función de devolución de llamada. Consulte Uso de eventos con parámetros para obtener más información.

# Stop driving when E Up is released
def stop_driving():
    drivetrain.stop()

controller.buttonEUp.released(stop_driving)

.changed#

.changed runs a function when the joystick’s position changes along the specified axis. Once it is used, the function will run automatically each time the joystick’s position changes along that axis.

Uso:
Se puede utilizar uno de los objetos de eje disponibles con este método:

Controlador IQ de segunda generación con los cuatro ejes del joystick resaltados. En el joystick izquierdo, el eje A es vertical y el eje B es horizontal. En el joystick derecho, el eje C es horizontal y el eje D es vertical.

Eje

Dominio

axisA

controller.axisA.changed(callback, arg) — The left joystick’s vertical axis

axisB

controller.axisB.changed(callback, arg) — The left joystick’s horizontal axis

axisC

controller.axisC.changed(callback, arg) — The right joystick’s horizontal axis

axisD

controller.axisD.changed(callback, arg) — The right joystick’s vertical axis

Parámetro

Descripción

callback

Una función definida previamente para ejecutarse cada vez que la posición del joystick cambie a lo largo del eje especificado.

arg

Opcional. Una tupla que contiene los argumentos que se pasarán a la función de devolución de llamada. Consulte Uso de eventos con parámetros para obtener más información.

# Play a sound when the right joystick moves
def beep():
    brain.play_sound(SoundType.TADA)

controller.axisD.changed(beep)

Constructores#

Controller#

Controller creates a Controller object. Manually creating a Controller object is only needed when configuring a controller outside of VEXcode.

Usage:
Controller()

Parámetros

Descripción

Este constructor no tiene parámetros.

# Create a Controller object
my_controller = Controller()