Controlador#

Introducción#

El controlador V5 tiene botones, dos joysticks, un motor de estruendo y una pantalla. Los métodos del controlador se pueden utilizar para verificar las pulsaciones de botones, leer el movimiento del joystick, hacer sonar el controlador, habilitar o deshabilitar las acciones configuradas del controlador, ejecutar funciones cuando ocurren eventos del controlador o mostrar texto en la pantalla 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_1 como ejemplo Nombre del 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:

Acciones: haga sonar el controlador o habilite/deshabilite las acciones configuradas del controlador.

  • rumble — Reproduce un patrón de estruendo en el controlador.

  • remote_control_code_enabled — Activa o desactiva las acciones del controlador configuradas en el menú Dispositivos.

Pantalla: muestra el texto y los números en la pantalla del controlador.

  • print — Muestra texto, números o valores de variables en la pantalla del controlador.

  • set_cursor — Mueve el cursor a una fila y columna especificadas en la pantalla del controlador.

  • column — Devuelve la columna del cursor actual en la pantalla del controlador.

  • row — Devuelve la fila del cursor actual en la pantalla del controlador.

  • clear_screen — Borra la pantalla del controlador.

  • clear_row — Borra una fila en la pantalla del controlador.

  • next_row — Mueve el cursor a la siguiente fila en la pantalla 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: ejecute las funciones cuando cambie 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.

Acciones#

rumble#

rumble reproduce un patrón de retumbar en el Controlador. En la cadena de patrones, los períodos son retumbos cortos, los guiones son retumbos largos y los espacios son pausas.

Usage:
controller_1.rumble(pattern)

Parámetro

Descripción

pattern

Una cuerda hecha de puntos, guiones y espacios que representan el patrón de estruendo.

# Rumble the Controller with a short-short-long-long pattern
controller_1.rumble("..--")

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_1.axis3.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller_1.axis3.position() < 0:
        drivetrain.drive(REVERSE)
    # Press A to use Controller configured actions again
    elif controller_1.buttonA.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

Pantalla#

La pantalla del controlador V5 tiene 3 filas y 19 columnas para mostrar texto y números.

Una captura de pantalla de la pantalla del controlador V5, que muestra las filas y columnas en el área imprimible. Fila 1 La columna 1 comienza en la esquina superior izquierda y la fila 3, columna 19 están en la esquina inferior derecha.

print#

controller_1.screen.print muestra texto, números o valores variables en la pantalla del Controlador utilizando la posición actual del cursor.

Usage:
controller_1.screen.print(value, sep, precision)

Parámetro

Descripción

value

El texto, el número o el valor de la variable que se mostrará en la pantalla del controlador. Se puede imprimir más de un valor separando los valores con comas.

sep

Opcional. Una cadena para colocar entre los valores. Esto debe escribirse como un argumento de palabra clave, como sep=”- “. El valor predeterminado es ” “.

precision

Opcional. El número de decimales que se mostrarán al imprimir números simples. Esto debe escribirse como un argumento de palabra clave, como precision=2. El valor predeterminado es 2.

# Print a number on the Controller screen
controller_1.screen.print(1)

# Print multiple numbers separated by hyphens
controller_1.screen.print(1, 2, 3, 4, sep="-")

# Print a number using one decimal place
controller_1.screen.print(1 / 3, precision=1)

set_cursor#

set_cursor mueve el cursor a una fila y columna especificadas en la pantalla del Controlador. El siguiente valor impreso aparecerá en esa posición.

Usage:
controller_1.screen.set_cursor(row, col)

Parámetro

Descripción

row

La fila del cursor, del 1 al 3.

col

La columna del cursor, del 1 al 19.

# Print text at row 2, column 1
controller_1.screen.set_cursor(2, 1)
controller_1.screen.print("Ready")

column#

column devuelve la columna actual donde se imprimirá el texto en la pantalla del controlador.

Usage:
controller_1.screen.column()

Parámetros

Descripción

Este método no tiene parámetros.

# Print the current column number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.column())

row#

la row devuelve la fila actual donde se imprimirá el texto en la pantalla del Controlador.

Usage:
controller_1.screen.row()

Parámetros

Descripción

Este método no tiene parámetros.

# Print the current row number
controller_1.screen.set_cursor(2, 3)
controller_1.screen.print(controller_1.screen.row())

clear_screen#

clear_screen borra la pantalla del controlador y mueve el cursor de nuevo a la posición inicial.

Usage:
controller_1.screen.clear_screen()

Parámetros

Descripción

Este método no tiene parámetros.

# Print text, then clear the Controller screen
controller_1.screen.print("VEX V5")
wait(2, SECONDS)
controller_1.screen.clear_screen()

clear_row#

clear_row borra una fila en la pantalla del controlador.

Usage:
controller_1.screen.clear_row(row)

Parámetro

Descripción

row

Opcional. La fila a borrar, de 1 a 3. Si no se proporciona ninguna fila, se borra la fila del cursor actual.

# Clear row 2 on the Controller screen
controller_1.screen.clear_row(2)

next_row#

next_row mueve el cursor a la columna 1 en la siguiente fila de la pantalla del controlador. El siguiente valor impreso aparecerá en esa fila.

Usage:
controller_1.screen.next_row()

Parámetros

Descripción

Este método no tiene parámetros.

# Print on two rows
controller_1.screen.print("VEX V5")
controller_1.screen.next_row()
controller_1.screen.print("Controller")

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_1.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 delantera y trasera del controlador V5 con los botones resaltados en amarillo. En la superficie del controlador hay botones de flecha arriba, abajo, izquierda y derecha a la izquierda, y botones X, A, B, Y en el sentido de las agujas del reloj desde las 12 en punto a la derecha. En la parte posterior del controlador se encuentran L1, L2, R1 y R2 en los lados izquierdo y derecho, respectivamente.

Botón

Comando

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.pressing() — El botón X

buttonY

controller_1.buttonY.pressing() — El botón Y

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.pressing() — El botón Izquierdo

buttonRight

controller_1.buttonRight.pressing() — El botón Derecho

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

Parámetros

Descripción

Este método no tiene parámetros.

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

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

Un controlador VEX V5 con los ejes alrededor de los joysticks etiquetados. Los ejes 1 y 2 están alrededor del joystick derecho, y los ejes 3 y 4 están alrededor del izquierdo.

Eje

Comando

axis1

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

axis2

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

axis3

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

axis4

controller_1.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_1.axis4.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller_1.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 delantera y trasera del controlador V5 con los botones resaltados en amarillo. En la superficie del controlador hay botones de flecha arriba, abajo, izquierda y derecha a la izquierda, y botones X, A, B, Y en el sentido de las agujas del reloj desde las 12 en punto a la derecha. En la parte posterior del controlador se encuentran L1, L2, R1 y R2 en los lados izquierdo y derecho, respectivamente.

Botón

Comando

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.pressed(callback, arg) — El botón X

buttonY

controller_1.buttonY.pressed(callback, arg) — El botón Y

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — El botón Izquierdo

buttonRight

controller_1.buttonRight.pressed(callback, arg) — El botón derecho

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

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

controller_1.buttonA.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 delantera y trasera del controlador V5 con los botones resaltados en amarillo. En la superficie del controlador hay botones de flecha arriba, abajo, izquierda y derecha a la izquierda, y botones X, A, B, Y en el sentido de las agujas del reloj desde las 12 en punto a la derecha. En la parte posterior del controlador se encuentran L1, L2, R1 y R2 en los lados izquierdo y derecho, respectivamente.

Botón

Comando

buttonA

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

buttonB

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

buttonX

controller_1.buttonX.released(callback, arg) — El botón X

buttonY

controller_1.buttonY.released(callback, arg) — El botón Y

buttonDown

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

buttonUp

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

buttonLeft

controller_1.buttonLeft.released(callback, arg) — El botón Izquierda

buttonRight

controller_1.buttonRight.released(callback, arg) — El botón Derecho

buttonL1

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

buttonL2

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

buttonR1

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

buttonR2

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

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.

# Drive backward when A is released
def back_up():
    drivetrain.drive_for(REVERSE, 100, MM)

controller_1.buttonA.released(back_up)

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

Un controlador VEX V5 con los ejes alrededor de los joysticks etiquetados. Los ejes 1 y 2 están alrededor del joystick derecho, y los ejes 3 y 4 están alrededor del izquierdo.

Eje

Comando

axis1

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

axis2

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

axis3

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

axis4

controller_1.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 tada_sound():
    brain.play_sound(SoundType.TADA)

controller_1.axis4.changed(tada_sound)

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(controller_type)

Parámetro

Descripción

controller_type

Opcional. El tipo de controlador a crear: PRIMARY para el controlador primario conectado al cerebro o PARTNER para el segundo controlador conectado al cerebro.

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)