Controlador#

Introducción#

El controlador VEX IQ (2ª generación) tiene botones y dos joysticks. Los métodos del controlador se pueden utilizar para verificar las pulsaciones de botones, leer el movimiento del joystick, habilitar o deshabilitar las acciones configuradas del controlador o ejecutar funciones cuando ocurren eventos del controlador.

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

Las acciones del controlador configuradas son comportamientos del controlador establecidos en el menú Dispositivos. Utilice remote_control_code_enabled para habilitar o deshabilitar temporalmente las acciones configuradas durante un proyecto.

Esta página utiliza controller como ejemplo de nombre de controlador. Reemplácelo con su propio nombre configurado según sea necesario.

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

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

Getters: lee los estados de los botones y las posiciones del joystick.

  • .pressing — Devuelve si se está presionando un botón especificado.

  • .position — Devuelve la posición de un eje de joystick especificado.

Devoluciones de llamada: ejecuta funciones cuando cambia la entrada del controlador.

  • .pressed — Ejecuta una función cuando se presiona un botón especificado.

  • .released — Ejecuta una función cuando se suelta un botón especificado.

  • .changed — Ejecuta una función cuando la posición del joystick cambia a lo largo de un eje especificado.

Constructor: crea manualmente un objeto Controller.

Acción#

remote_control_code_enabled#

remote_control_code_enabled es una variable que habilita o deshabilita las acciones del controlador configuradas en el menú Dispositivos. Las acciones configuradas por el controlador están habilitadas de forma predeterminada.

Usage:
remote_control_code_enabled = state

Valor

Descripción

True

Habilita las acciones configuradas por el controlador.

False

Desactiva 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

Getters#

.pressing#

.pressing devuelve si se está presionando actualmente un botón específico en el controlador. Este método debe llamarse en un objeto de botón específico, como controller.buttonEUp.

  • True : se está presionando el botón especificado.

  • False — No se está presionando el botón especificado.

Uso:
Uno de los objetos de botón disponibles se puede usar con este método:

Una vista lateral frontal y posterior del controlador IQ de segunda generación con todos los botones resaltados en amarillo. La superficie del controlador 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 controlador hay L arriba y abajo y R arriba y abajo en los lados izquierdo y derecho, respectivamente.

Botón

Comando

buttonEDown

controller.buttonEDown.pressing() — El botón * ▼*E * *

buttonEUp

controller.buttonEUp.pressing() — El botón * ▲*E * *

buttonFDown

controller.buttonFDown.pressing() — El botón * ▼*F * *

buttonFUp

controller.buttonFUp.pressing() — El botón * ▲*F * *

buttonL3

controller.buttonL3.pressing() — El botón Palanca de mando izquierda, solo controlador IQ (2ª generación)

buttonLDown

controller.buttonLDown.pressing() — El botón * ▼*L * *

buttonLUp

controller.buttonLUp.pressing() — El botón * ▲*L * *

buttonR3

controller.buttonR3.pressing() — El botón Palanca de mando derecha, solo controlador IQ (2ª generación)

buttonRDown

controller.buttonRDown.pressing() — El botón * ▼*R * *

buttonRUp

controller.buttonRUp.pressing() — El botón * ▲*R * *

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 devuelve la posición de un eje del joystick como un número de -100 a 100.

Este método debe llamarse en un objeto de eje específico, como controller.axisA.

Uso:
Uno de los objetos de eje disponibles se puede utilizar con este método:

El 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

Comando

axisA

controller.axisA.position() — Eje vertical del joystick izquierdo

axisB

controller.axisB.position() — Eje horizontal del joystick izquierdo

axisC

controller.axisC.position() — Eje horizontal del joystick derecho

axisD

controller.axisD.position() — Eje vertical del joystick derecho

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 ejecuta una función cuando se presiona el botón especificado. Una vez utilizada, la función se ejecutará automáticamente cada vez que se presione ese botón.

Uso:
Uno de los objetos de botón disponibles se puede usar con este método:

Una vista lateral frontal y posterior del controlador IQ de segunda generación con todos los botones resaltados en amarillo. La superficie del controlador 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 controlador hay L arriba y abajo y R arriba y abajo en los lados izquierdo y derecho, respectivamente.

Botón

Comando

buttonEDown

controller.buttonEDown.pressed(callback, arg) — El botón * ▼*E * *

buttonEUp

controller.buttonEUp.pressed(callback, arg) — El botón * ▲*E * *

buttonFDown

controller.buttonFDown.pressed(callback, arg) — El botón * ▼*F * *

buttonFUp

controller.buttonFUp.pressed(callback, arg) — El botón * ▲*F * *

buttonL3

controller.buttonL3.pressed(callback, arg) — El botón Left Joystick, solo controlador IQ (2ª generación)

buttonLDown

controller.buttonLDown.pressed(callback, arg) — El botón * ▼*L * *

buttonLUp

controller.buttonLUp.pressed(callback, arg) — El botón * ▲*L * *

buttonR3

controller.buttonR3.pressed(callback, arg) — El botón Right Joystick, solo controlador IQ (2ª generación)

buttonRDown

controller.buttonRDown.pressed(callback, arg) — El botón * ▼*R * *

buttonRUp

controller.buttonRUp.pressed(callback, arg) — El botón * ▲*R * *

Parámetro

Descripción

callback

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

arg

Opcional. Una tupla que contiene argumentos para pasar 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 ejecuta una función cuando se suelta el botón especificado. Una vez utilizada, la función se ejecutará automáticamente cada vez que se suelte ese botón.

Uso:
Uno de los objetos de botón disponibles se puede usar con este método:

Una vista lateral frontal y posterior del controlador IQ de segunda generación con todos los botones resaltados en amarillo. La superficie del controlador 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 controlador hay L arriba y abajo y R arriba y abajo en los lados izquierdo y derecho, respectivamente.

Botón

Comando

buttonEDown

controller.buttonEDown.released(callback, arg) — El botón * ▼*E * *

buttonEUp

controller.buttonEUp.released(callback, arg) — El botón * ▲*E * *

buttonFDown

controller.buttonFDown.released(callback, arg) — El botón * ▼*F * *

buttonFUp

controller.buttonFUp.released(callback, arg) — El botón * ▲*F * *

buttonL3

controller.buttonL3.released(callback, arg) — El botón Left Joystick, solo controlador IQ (2ª generación)

buttonLDown

controller.buttonLDown.released(callback, arg) — El botón * ▼*L * *

buttonLUp

controller.buttonLUp.released(callback, arg) — El botón * ▲*L * *

buttonR3

controller.buttonR3.released(callback, arg) — El botón Right Joystick, solo controlador IQ (2ª generación)

buttonRDown

controller.buttonRDown.released(callback, arg) — El botón * ▼*R * *

buttonRUp

controller.buttonRUp.released(callback, arg) — El botón * ▲*R * *

Parámetro

Descripción

callback

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

arg

Opcional. Una tupla que contiene argumentos para pasar 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 ejecuta una función cuando la posición del joystick cambia a lo largo del eje especificado. Una vez utilizada, la función se ejecutará automáticamente cada vez que la posición del joystick cambie a lo largo de ese eje.

Uso:
Uno de los objetos de eje disponibles se puede utilizar con este método:

El 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

Comando

axisA

controller.axisA.changed(callback, arg) — El eje vertical del joystick izquierdo

axisB

controller.axisB.changed(callback, arg) — El eje horizontal del joystick izquierdo

axisC

controller.axisC.changed(callback, arg) — El eje horizontal del joystick derecho

axisD

controller.axisD.changed(callback, arg) — El eje vertical del joystick derecho

Parámetro

Descripción

callback

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

arg

Opcional. Una tupla que contiene argumentos para pasar 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 crea un objeto Controller. La creación manual de un objeto Controller solo es necesaria cuando se configura un controlador fuera de VEXcode.

Usage:
Controller()

Parámetros

Descripción

Este constructor no tiene parámetros.

# Create a Controller object
my_controller = Controller()