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.
remote_control_code_enabled— Activa o desactiva las acciones del controlador configuradas en el menú Dispositivos.
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.
Controller— Crea 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 |
|---|---|
|
Habilita las acciones configuradas por el controlador. |
|
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:
Botón |
Comando |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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:
Eje |
Comando |
|---|---|
|
|
|
|
|
|
|
|
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:
Botón |
Comando |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Parámetro |
Descripción |
|---|---|
|
Una función previamente definida para ejecutarse cada vez que se presiona el botón especificado. |
|
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:
Botón |
Comando |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Parámetro |
Descripción |
|---|---|
|
Una función previamente definida para ejecutarse cada vez que se suelta el botón especificado. |
|
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:
Eje |
Comando |
|---|---|
|
|
|
|
|
|
|
|
Parámetro |
Descripción |
|---|---|
|
Una función previamente definida para ejecutarse cada vez que la posición del joystick cambia a lo largo del eje especificado. |
|
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()