Controlador#
Introducción#
El controlador de drones VEX AIR cuenta con un diseño de 12 botones y dos joysticks. Estas entradas permiten que el dron detecte pulsaciones de botones y movimientos del joystick, lo que permite un control interactivo y receptivo.
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– Devuelve si se está presionando un botón específico.position– Devuelve la posición del joystick a lo largo de un eje especificado.is_drone_connected– Devuelve si el controlador está conectado al dron.get_battery_level– Devuelve el nivel de batería del controlador.
Devoluciones de llamada: responda a los cambios de entrada del botón o del joystick.
Getters#
pressing#
Al presionar pressing se devuelve un valor booleano que indica si se está presionando un botón específico del controlador. Este método debe llamarse en un objeto de botón específico, como button5 (consulte la lista completa de objetos de botón a continuación).
True: se está presionando el botón especificado.False- No se está presionando el botón especificado.
Uso:
Se puede usar uno de los ocho botones disponibles, numerados del 5 al 12, con este método, como se muestra a continuación:
Botón |
Comando |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

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#
la position devuelve la posición del eje especificado del joystick, como un porcentaje de –100% a 100%.
Uso:
Se puede utilizar uno de los cuatro ejes disponibles con este método, numerados del 1 al 4.
Eje |
Comando |
|---|---|
|
|
|
|
|
|
|
|

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 devuelve un booleano que indica si el dron está conectado.
True: el dron está conectado.False- El dron no está conectado.
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 devuelve el nivel de batería del controlador, como un porcentaje del 0% al 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 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:
Se puede usar uno de los ocho botones disponibles con este método, numerados del 5 al 12.
Botón |
Comando |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Parámetros |
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. |
# Take a picture when button 5 is pressed.
def take_picture():
drone.camera.capture_image(FORWARD_CAMERA)
# Run take_picture each time button 5 is pressed.
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 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:
Se puede usar uno de los ocho botones disponibles con este método, numerados del 5 al 12.
Botón |
Comando |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Parámetros |
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 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)
# Run take_picture each time button 5 is released.
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 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:
Se puede utilizar uno de los cuatro ejes disponibles con este método, numerados del 1 al 4.
Eje |
Comando |
|---|---|
|
|
|
|
|
|
|
|

Parámetros |
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 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)