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 – Checks if a specific button is currently being pressed.

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

  • is_drone_connected – Returns whether or not 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 – Calls a function when the specified button is pressed.

  • .released – Calls a function when the specified button is released.

  • .changed – Calls a function when the joystick’s axis changes.

Captadores#

.pressing#

.pressing returns if a specific controller button is being pressed. This method must be called on a specific button, such as button5 (see full list of buttons below). This will return either of the following:

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

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

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 VEX AIR está mirando hacia atrás con sus 8 botones naranjas resaltados en amarillo.

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. This will return an integer 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 VEX AIR está mirando hacia adelante con los ejes del joystick bordeados por cuadros rojos.

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 whether the drone is connected. This will return a Boolean value:

  • 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. This returns an integer 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 VEX AIR está mirando hacia atrás con sus 8 botones naranjas resaltados en amarillo.

Parámetros

Descripción

callback

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

arg

Opcional. Una tupla que contiene los argumentos que se pasarán a la función de devolución de llamada. Consulte Uso de eventos con parámetros para obtener más información.

# 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 registra una función que se llamará al soltar un botón específico del controlador. Este método debe llamarse en un botón específico, como button5 (ver la lista completa de botones a continuación).

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 VEX AIR está mirando hacia atrás con sus 8 botones naranjas resaltados en amarillo.

Parámetros

Descripción

callback

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

arg

Opcional. Una tupla que contiene los argumentos que se pasan a la función de devolución de llamada. Consulte Uso de funciones con parámetros para obtener más información.

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

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 VEX AIR está mirando hacia adelante con los ejes del joystick bordeados por cuadros rojos.

Parámetros

Descripción

callback

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

arg

Opcional. Una tupla que contiene los argumentos que se pasan a la función de devolución de llamada. Consulte Uso de funciones con parámetros para obtener más información.

# 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)