Controlador#

Introducción#

El controlador de drones VEX AIR cuenta con 12 botones y dos joysticks. Estas entradas permiten que el dron detecte las pulsaciones de los botones y los movimientos del joystick, lo que permite un control interactivo y ágil.

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

Getters: botón de lectura, joystick y estado de conexión.

  • pressing – Returns if a specific button is currently being pressed.

  • position – Returns the position of the joystick along a specified axis.

  • is_drone_connected – Returns whether the controller is connected to the drone.

  • get_battery_level – Returns the controller’s battery level.

Devoluciones de llamadas: responden a cambios en la entrada del botón o del joystick.

  • pressed – Registers a function to be called when the specified button is pressed.

  • released – Registers a function to be called when the specified button is released.

  • changed – Registers a function to be called when the joystick’s axis changes.

Captadores#

pressing#

pressing returns a Boolean indicating whether a specific button on the controller is currently being pressed. This method must be called on a specific button object, such as button5 (see full list of button objects below).

  • True - The specified button is being pressed.

  • False - The specified button is not being pressed.

Uso:
Se puede utilizar uno de los ocho botones disponibles, numerados del 5 al 12, con este método, como se muestra a continuación:

Botón

Dominio

button5

controller.button5.pressing() — Button 5

button6

controller.button6.pressing() — Button 6

button7

controller.button7.pressing() — Button 7

button8

controller.button8.pressing() — Button 8

button9

controller.button9.pressing() — Button 9

button10

controller.button10.pressing() — Button 10

button11

controller.button11.pressing() — Button 11

button12

controller.button12.pressing() — Button 12

Un controlador de dron VEX AIR que muestra los botones del 5 al 12. Los botones 5 y 6 están en la parte posterior del lado derecho del controlador, perpendiculares al joystick. Los botones 7 y 8 están en la misma posición en el lado izquierdo. Los botones del 9 al 12 están en la superficie inferior del controlador, con el 9 en la esquina superior derecha encima del 10, y el 11 en la esquina superior izquierda encima del 12.

Parámetros

Descripción

Este método no tiene parámetros.

# Take a picture when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
    # Fly using the controller sticks
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )

    # Capture an image from the forward camera when button 5 is pressed.
    if controller.button5.pressing():
        drone.camera.capture_image(FORWARD_CAMERA)

    wait(5, MSEC)

position#

position returns the position of the joystick’s specified axis, as a percentage from –100% to 100%.

Uso:

Con este método se puede utilizar uno de los cuatro ejes disponibles, numerados del 1 al 4.

Eje

Dominio

axis1

controller.axis1.position() — The left joystick vertical axis

axis2

controller.axis2.position() — The left joystick horizontal axis

axis3

controller.axis3.position() — The right joystick horizontal axis

axis4

controller.axis4.position() — The right joystick vertical axis

Un controlador de dron VEX AIR con las etiquetas de los ejes 1 y 2 resaltadas alrededor del joystick izquierdo, y las etiquetas de los ejes 3 y 4 resaltadas alrededor del joystick derecho.

Parámetros

Descripción

Este método no tiene parámetros.

# Climb when the left joystick is moved up.
drone.take_off(climb_to=500)
while True:
    if controller.axis1.position() > 0:
        drone.climb(direction=UP, velocity=50)
    else:
        drone.hover()
    wait(5, MSEC)

is_drone_connected#

is_drone_connected returns a Boolean indicating whether the drone is connected.

  • True - The drone is connected.

  • False - The drone is not connected.

Uso:

controller.is_drone_connected()

Parámetros

Descripción

Este método no tiene parámetros.

# Print controller connection status on screen.
while True:
    if controller.is_drone_connected():
        controller.screen.clear_screen()
        controller.screen.set_cursor(1, 1)
        controller.screen.print("Controller connected")
    wait(0.5, SECONDS)

get_battery_level#

get_battery_level returns the Controller’s battery level, as a percentage from 0% to 100%.

Uso:

controller.get_battery_level()

Parámetros

Descripción

Este método no tiene parámetros.

# Show controller's battery level.
if controller.get_battery_level() > 50:
    controller.screen.print("Battery level ok")
else:
    controller.screen.print("Battery level low")

Devoluciones de llamadas#

pressed#

pressed registers a function to be called when a specific button on the controller is pressed. This method must be called on a specific button, such as button5 (see full list of buttons below).

Uso:
Se puede utilizar uno de los ocho botones disponibles con este método, numerados del 5 al 12.

Botón

Dominio

button5

controller.button5.pressing() — Button 5

button6

controller.button6.pressing() — Button 6

button7

controller.button7.pressing() — Button 7

button8

controller.button8.pressing() — Button 8

button9

controller.button9.pressing() — Button 9

button10

controller.button10.pressing() — Button 10

button11

controller.button11.pressing() — Button 11

button12

controller.button12.pressing() — Button 12

Un controlador de dron VEX AIR que muestra los botones del 5 al 12. Los botones 5 y 6 están en la parte posterior del lado derecho del controlador, perpendiculares al joystick. Los botones 7 y 8 están en la misma posición en el lado izquierdo. Los botones del 9 al 12 están en la superficie inferior del controlador, con el 9 en la esquina superior derecha encima del 10, y el 11 en la esquina superior izquierda encima del 12.

Parámetros

Descripción

callback

Una función que se define previamente para ejecutarse cuando se presiona el botón especificado.

arg

Optional. A tuple containing arguments to pass to the callback function. See Using Events with Parameters for more information.

# Take a picture when button 5 is pressed.
def take_picture():
    drone.camera.capture_image(FORWARD_CAMERA)

# Register the button press callback.
controller.button5.pressed(take_picture)

# Fly using the controller sticks.
drone.take_off(climb_to=500)
while True:
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)

released#

released registers a function to be called when a specific button on the controller is released. This method must be called on a specific button, such as button5 (see full list of buttons below).

Uso:
Se puede utilizar uno de los ocho botones disponibles con este método, numerados del 5 al 12.

Botón

Dominio

button5

controller.button5.pressing() — Button 5

button6

controller.button6.pressing() — Button 6

button7

controller.button7.pressing() — Button 7

button8

controller.button8.pressing() — Button 8

button9

controller.button9.pressing() — Button 9

button10

controller.button10.pressing() — Button 10

button11

controller.button11.pressing() — Button 11

button12

controller.button12.pressing() — Button 12

Un controlador de dron VEX AIR que muestra los botones del 5 al 12. Los botones 5 y 6 están en la parte posterior del lado derecho del controlador, perpendiculares al joystick. Los botones 7 y 8 están en la misma posición en el lado izquierdo. Los botones del 9 al 12 están en la superficie inferior del controlador, con el 9 en la esquina superior derecha encima del 10, y el 11 en la esquina superior izquierda encima del 12.

Parámetros

Descripción

callback

Una función que se define previamente para ejecutarse cuando se suelta el botón especificado.

arg

Optional. A tuple containing arguments to pass to the callback function. See Using Functions with Parameters for more information.

# Take a picture when button 5 is released.
def take_picture():
    drone.camera.capture_image(FORWARD_CAMERA)

# Register the button released callback.
controller.button5.released(take_picture)

# Fly using the controller sticks.
drone.take_off(climb_to=500)
while True:
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)

changed#

changed registers a function to be called when the joystick’s position changes. This method must be called on a specific axis, such as axis1 (see full list of axes below).

Uso:

Con este método se puede utilizar uno de los cuatro ejes disponibles, numerados del 1 al 4.

Eje

Dominio

axis1

controller.axis1.position() — The left joystick vertical axis

axis2

controller.axis2.position() — The left joystick horizontal axis

axis3

controller.axis3.position() — The right joystick horizontal axis

axis4

controller.axis4.position() — The right joystick vertical axis

Un controlador de dron VEX AIR con las etiquetas de los ejes 1 y 2 resaltadas alrededor del joystick izquierdo, y las etiquetas de los ejes 3 y 4 resaltadas alrededor del joystick derecho.

Parámetros

Descripción

callback

Una función que se define previamente para ejecutarse cuando cambia el valor del eje.

arg

Optional. A tuple containing arguments to pass to the callback function. See Using Functions with Parameters for more information.

# Move forward when the left joystick moves.
def on_axis1_changed():
    drone.move_for(direction=0, distance=200, velocity=50, units=MM)

drone.take_off(climb_to=500)
controller.axis1.changed(on_axis1_changed)