Contrôleur#

Introduction#

La radiocommande du drone VEX AIR est dotée de 12 boutons et de deux joysticks. Ces commandes permettent au drone de détecter les appuis sur les boutons et les mouvements des joysticks, offrant ainsi un contrôle interactif et réactif.

Vous trouverez ci-dessous la liste de toutes les méthodes disponibles :

Acquisition des données – Lecture des boutons, du joystick et de l’état de la connexion.

  • pressing – Renvoie si un bouton spécifique est actuellement enfoncé.

  • position – Renvoie la position du joystick le long d’un axe spécifié.

  • is_drone_connected – Renvoie si la télécommande est connectée au drone.

  • get_battery_level – Renvoie le niveau de batterie de la manette.

Rappels – Répondre aux changements d’entrée des boutons ou du joystick.

  • pressed – Exécute une fonction lorsqu’un bouton spécifié est appuyé.

  • released – Exécute une fonction lorsqu’un bouton spécifié est relâché.

  • changed – Exécute une fonction lorsque la position du joystick change le long d’un axe spécifié.

Getters#

pressing#

La méthode pressing renvoie une valeur booléenne indiquant si un bouton spécifique de la manette est actuellement enfoncé. Cette méthode doit être appelée sur un objet bouton spécifique, tel que button5 (voir la liste complète des objets boutons ci-dessous).

  • True - Le bouton spécifié est enfoncé.

  • False - Le bouton spécifié n’est pas enfoncé.

Utilisation :
L’un des huit boutons disponibles, numérotés de 5 à 12, peut être utilisé avec cette méthode, comme indiqué ci-dessous :

Bouton

Commande

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

Une manette de drone VEX AIR montrant les boutons 5 à 12. Les boutons 5 et 6 se trouvent à l'arrière, sur le côté droit de la manette, perpendiculairement au joystick. Les boutons 7 et 8 sont à la même position, sur le côté gauche. Les boutons 9 à 12 se trouvent sur la face inférieure de la manette : le bouton 9 est situé dans le coin supérieur droit, au-dessus du bouton 10, et le bouton 11 dans le coin supérieur gauche, au-dessus du bouton 12.

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

# 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 position renvoie la position de l’axe spécifié du joystick, sous forme de pourcentage de –100 % à 100 %.

Usage:

L’un des quatre axes disponibles peut être utilisé avec cette méthode, numérotés de 1 à 4.

Axe

Commande

axis1

controller.axis1.position() — Axe vertical du joystick gauche

axis2

controller.axis2.position() — Axe horizontal du joystick gauche

axis3

controller.axis3.position() — Axe horizontal du joystick droit

axis4

controller.axis4.position() — Axe vertical du joystick droit

Une manette de drone VEX AIR avec les étiquettes des axes 1 et 2 mises en évidence autour du joystick gauche, et les étiquettes des axes 3 et 4 mises en évidence autour du joystick droit.

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

# 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 renvoie une valeur booléenne indiquant si le drone est connecté.

  • True - Le drone est connecté.

  • False - Le drone n’est pas connecté.

Usage:

controller.is_drone_connected()

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

# 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 renvoie le niveau de batterie du contrôleur, en pourcentage de 0 % à 100 %.

Usage:

controller.get_battery_level()

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

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

Rappels#

pressed#

Lorsque la touche pressed est pressée, une fonction est exécutée. Une fois utilisée, cette fonction s’exécutera automatiquement à chaque pression sur cette touche.

Utilisation :
L’un des huit boutons disponibles peut être utilisé avec cette méthode, numérotés de 5 à 12.

Bouton

Commande

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

Une manette de drone VEX AIR montrant les boutons 5 à 12. Les boutons 5 et 6 se trouvent à l'arrière, sur le côté droit de la manette, perpendiculairement au joystick. Les boutons 7 et 8 sont à la même position, sur le côté gauche. Les boutons 9 à 12 se trouvent sur la face inférieure de la manette : le bouton 9 est situé dans le coin supérieur droit, au-dessus du bouton 10, et le bouton 11 dans le coin supérieur gauche, au-dessus du bouton 12.

Paramètres

Description

callback

Une fonction précédemment définie à exécuter chaque fois que le bouton spécifié est pressé.

arg

Facultatif. Un tuple contenant les arguments à transmettre à la fonction de rappel. Voir Utilisation des événements avec des paramètres pour plus d’informations.

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

Lorsque le bouton spécifié est relâché released , une fonction est exécutée. Une fois utilisée, cette fonction s’exécutera automatiquement à chaque relâchement de ce bouton.

Utilisation :
L’un des huit boutons disponibles peut être utilisé avec cette méthode, numérotés de 5 à 12.

Bouton

Commande

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

Une manette de drone VEX AIR montrant les boutons 5 à 12. Les boutons 5 et 6 se trouvent à l'arrière, sur le côté droit de la manette, perpendiculairement au joystick. Les boutons 7 et 8 sont à la même position, sur le côté gauche. Les boutons 9 à 12 se trouvent sur la face inférieure de la manette : le bouton 9 est situé dans le coin supérieur droit, au-dessus du bouton 10, et le bouton 11 dans le coin supérieur gauche, au-dessus du bouton 12.

Paramètres

Description

callback

Une fonction précédemment définie à exécuter chaque fois que le bouton spécifié est relâché.

arg

Facultatif. Un tuple contenant les arguments à transmettre à la fonction de rappel. Voir Utilisation des fonctions avec paramètres pour plus d’informations.

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

La valeur changed exécute une fonction lorsque la position du joystick change le long de l’axe spécifié. Une fois utilisée, cette fonction s’exécutera automatiquement à chaque changement de position du joystick le long de cet axe.

Usage:

L’un des quatre axes disponibles peut être utilisé avec cette méthode, numérotés de 1 à 4.

Axe

Commande

axis1

controller.axis1.position() — Axe vertical du joystick gauche

axis2

controller.axis2.position() — Axe horizontal du joystick gauche

axis3

controller.axis3.position() — Axe horizontal du joystick droit

axis4

controller.axis4.position() — Axe vertical du joystick droit

Une manette de drone VEX AIR avec les étiquettes des axes 1 et 2 mises en évidence autour du joystick gauche, et les étiquettes des axes 3 et 4 mises en évidence autour du joystick droit.

Paramètres

Description

callback

Une fonction précédemment définie à exécuter chaque fois que la position du joystick change le long de l’axe spécifié.

arg

Facultatif. Un tuple contenant les arguments à transmettre à la fonction de rappel. Voir Utilisation des fonctions avec paramètres pour plus d’informations.

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