Controlador#

Introducción#

El controlador VEX EXP 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.

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.

# Drive forward or backward using the left joystick
remote_control_code_enabled = False

while True:
    if controller.axis3.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller.axis3.position() < 0:
        drivetrain.drive(REVERSE)
    # Press A to use controller configured actions again
    elif controller.buttonA.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. Se debe llamar a este método en un objeto de botón específico, como controller.buttonA.

  • 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:

La parte frontal y superior del controlador EXP con los joysticks, los botones de flecha y los botones de acción resaltados en amarillo. En la superficie del controlador hay dos joysticks a la izquierda y a la derecha, con los botones de flecha arriba y abajo a la izquierda y los botones A y B a la derecha. En la parte superior del controlador se encuentran L1 y L2 en el lado izquierdo y R1 y R2 en el lado derecho.

Botón

Comando

buttonA

controller.buttonA.pressing() — El botón A

buttonB

controller.buttonB.pressing() — El botón B

buttonDown

controller.buttonDown.pressing() — El botón Abajo

buttonUp

controller.buttonUp.pressing() — El botón Arriba

buttonL1

controller.buttonL1.pressing() — El botón L1

buttonL2

controller.buttonL2.pressing() — El botón L2

buttonL3

controller.buttonL3.pressing() — El botón L3

buttonR1

controller.buttonR1.pressing() — El botón R1

buttonR2

controller.buttonR2.pressing() — El botón R2

buttonR3

controller.buttonR3.pressing() — El botón R3

Parámetros

Descripción

Este método no tiene parámetros.

# Turn right while L1 is pressed
while True:
    if controller.buttonL1.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.axis1.

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

La parte frontal del controlador EXP con los números del eje del joystick resaltados en rojo. En la superficie del controlador, el joystick izquierdo está etiquetado como Eje 4 para el movimiento hacia la izquierda y hacia la derecha y Eje 3 para el movimiento hacia arriba y hacia abajo, mientras que el joystick derecho está etiquetado como Eje 1 para el movimiento hacia la izquierda y hacia la derecha y Eje 2 para el movimiento hacia arriba y hacia abajo.

Eje

Comando

axis1

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

axis2

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

axis3

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

axis4

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

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.axis4.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller.axis4.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:

La parte frontal y superior del controlador EXP con los joysticks, los botones de flecha y los botones de acción resaltados en amarillo. En la superficie del controlador hay dos joysticks a la izquierda y a la derecha, con los botones de flecha arriba y abajo a la izquierda y los botones A y B a la derecha. En la parte superior del controlador se encuentran L1 y L2 en el lado izquierdo y R1 y R2 en el lado derecho.

Botón

Comando

buttonA

controller.buttonA.pressed(callback, arg) — El botón A

buttonB

controller.buttonB.pressed(callback, arg) — El botón B

buttonDown

controller.buttonDown.pressed(callback, arg) — El botón Abajo

buttonUp

controller.buttonUp.pressed(callback, arg) — El botón Arriba

buttonL1

controller.buttonL1.pressed(callback, arg) — El botón L1

buttonL2

controller.buttonL2.pressed(callback, arg) — El botón L2

buttonL3

controller.buttonL3.pressed(callback, arg) — El botón L3

buttonR1

controller.buttonR1.pressed(callback, arg) — El botón * * R1 * *

buttonR2

controller.buttonR2.pressed(callback, arg) — El botón * * R2 * *

buttonR3

controller.buttonR3.pressed(callback, arg) — El botón * * R3 * *

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 R1 is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 200, MM)

controller.buttonR1.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:

La parte frontal y superior del controlador EXP con los joysticks, los botones de flecha y los botones de acción resaltados en amarillo. En la superficie del controlador hay dos joysticks a la izquierda y a la derecha, con los botones de flecha arriba y abajo a la izquierda y los botones A y B a la derecha. En la parte superior del controlador se encuentran L1 y L2 en el lado izquierdo y R1 y R2 en el lado derecho.

Botón

Comando

buttonA

controller.buttonA.released(callback, arg) — El botón A

buttonB

controller.buttonB.released(callback, arg) — El botón B

buttonDown

controller.buttonDown.released(callback, arg) — El botón Abajo

buttonUp

controller.buttonUp.released(callback, arg) — El botón Arriba

buttonL1

controller.buttonL1.released(callback, arg) — El botón L1

buttonL2

controller.buttonL2.released(callback, arg) — El botón L2

buttonL3

controller.buttonL3.released(callback, arg) — El botón L3

buttonR1

controller.buttonR1.released(callback, arg) — El botón R1

buttonR2

controller.buttonR2.released(callback, arg) — El botón R2

buttonR3

controller.buttonR3.released(callback, arg) — El botón R3

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 R1 is released
def stop_driving():
    drivetrain.stop()

controller.buttonR1.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:

La parte frontal del controlador EXP con los números del eje del joystick resaltados en rojo. En la superficie del controlador, el joystick izquierdo está etiquetado como Eje 4 para el movimiento hacia la izquierda y hacia la derecha y Eje 3 para el movimiento hacia arriba y hacia abajo, mientras que el joystick derecho está etiquetado como Eje 1 para el movimiento hacia la izquierda y hacia la derecha y Eje 2 para el movimiento hacia arriba y hacia abajo.

Eje

Comando

axis1

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

axis2

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

axis3

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

axis4

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

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 left joystick moves
def beep():
    brain.play_sound(SoundType.TADA)

controller.axis3.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()