Contrôleur#

Introduction#

La manette V5 est équipée de boutons, de deux joysticks, d’un moteur de vibration et d’un écran. Ses fonctions permettent de vérifier les appuis sur les boutons, de lire les mouvements des joysticks, de faire vibrer la manette, d’activer ou de désactiver les actions configurées, d’exécuter des fonctions lors d’événements ou d’afficher du texte sur son écran.

Les actions de contrôleur configurées sont des comportements de contrôleur définis dans le menu Appareils. Utilisez remote_control_code_enabled pour activer ou désactiver temporairement ces actions configurées au cours d’un projet.

Cette page utilise controller_1 comme nom de contrôleur d’exemple. Remplacez-le par le nom que vous avez configuré, selon vos besoins.

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

Actions — Faites vibrer la manette ou activez/désactivez les actions configurées de la manette.

  • rumble — Joue un motif de vibration sur la manette.

  • remote_control_code_enabled — Active ou désactive les actions du contrôleur configurées dans le menu Appareils.

Écran — Affiche le texte et les chiffres sur l’écran de la manette.

  • print — Affiche du texte, des nombres ou des valeurs de variables sur l’écran du contrôleur.

  • set_cursor — Déplace le curseur vers une ligne et une colonne spécifiées sur l’écran du contrôleur.

  • column — Renvoie la colonne actuelle du curseur sur l’écran du contrôleur.

  • row — Renvoie la ligne actuelle du curseur sur l’écran du contrôleur.

  • clear_screen — Efface l’écran du contrôleur.

  • clear_row — Efface une ligne sur l’écran du contrôleur.

  • next_row — Déplace le curseur vers la ligne suivante sur l’écran du contrôleur.

Getters — Lire l’état des boutons et la position du joystick.

  • .pressing — Renvoie si un bouton spécifié est en cours d’appui.

  • .position — Renvoie la position d’un axe de joystick spécifié.

Rappels — Exécuter des fonctions lorsque l’entrée du contrôleur change.

  • .pressed — Exécute une fonction lorsqu’un bouton spécifié est pressé.

  • .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é.

Constructeur — Créez manuellement un objet Contrôleur.

Actes#

rumble#

La commande rumble déclenche un motif de vibration sur la manette. Dans ce motif, les points représentent des vibrations courtes, les tirets des vibrations longues et les espaces des pauses.

Usage:
controller_1.rumble(pattern)

Paramètre

Description

pattern

Une suite de caractères composée de points, de tirets et d’espaces qui représentent le motif de grondement.

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

remote_control_code_enabled#

La variable remote_control_code_enabled active ou désactive les actions du contrôleur configurées dans le menu « Périphériques ». Ces actions sont activées par défaut.

Usage:
remote_control_code_enabled = state

Valeur

Description

True

Active les actions configurées du contrôleur.

False

Désactive les actions configurées du contrôleur.

# 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

Écran#

L’écran du contrôleur V5 comporte 3 lignes et 19 colonnes pour l’affichage de texte et de chiffres.

Capture d'écran de la manette V5 montrant les lignes et les colonnes de la zone imprimable. La ligne 1, colonne 1, commence en haut à gauche et la ligne 3, colonne 19, se trouvent en bas à droite.

print#

controller_1.screen.print affiche du texte, des nombres ou des valeurs de variables sur l’écran du contrôleur en utilisant la position actuelle du curseur.

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

Paramètre

Description

value

Le texte, le nombre ou la valeur de variable à afficher sur l’écran du contrôleur. Plusieurs valeurs peuvent être affichées en les séparant par des virgules.

sep

Facultatif. Une chaîne de caractères à placer entre les valeurs. Elle doit être écrite comme un argument nommé, par exemple : sep= »- “. La valeur par défaut est ” « .

precision

Facultatif. Nombre de décimales à afficher lors de l’impression de nombres simples. Doit être spécifié comme argument nommé, par exemple : precision=2La valeur par défaut est 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#

La commande set_cursor déplace le curseur vers une ligne et une colonne spécifiées sur l’écran du contrôleur. La prochaine valeur imprimée apparaîtra à cet emplacement.

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

Paramètre

Description

row

La ligne du curseur, de 1 à 3.

col

La colonne du curseur, de 1 à 19.

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

column#

La colonne column renvoie la colonne actuelle dans laquelle le texte sera imprimé sur l’écran du contrôleur.

Usage:
controller_1.screen.column()

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

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

row#

La ligne row renvoie la ligne actuelle sur laquelle le texte sera imprimé à l’écran du contrôleur.

Usage:
controller_1.screen.row()

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

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

clear_screen#

clear_screen efface l’écran du contrôleur et ramène le curseur à sa position de départ.

Usage:
controller_1.screen.clear_screen()

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

# 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 efface une ligne sur l’écran du contrôleur.

Usage:
controller_1.screen.clear_row(row)

Paramètre

Description

row

Facultatif. La ligne à effacer, de 1 à 3Si aucune ligne n’est fournie, la ligne actuelle du curseur est effacée.

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

next_row#

La commande next_row déplace le curseur à la colonne 1 de la ligne suivante de l’écran du contrôleur. La prochaine valeur imprimée apparaîtra sur cette ligne.

Usage:
controller_1.screen.next_row()

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

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

Getters#

.pressing#

.pressing renvoie si un bouton spécifique du contrôleur est actuellement enfoncé. Cette méthode doit être appelée sur un objet bouton spécifique, tel que controller_1.buttonA.

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

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

Utilisation :
L’un des objets bouton disponibles peut être utilisé avec cette méthode :

Faces avant et arrière de la manette V5, les boutons étant surlignés en jaune. Sur la face avant de la manette se trouvent les boutons fléchés haut, bas, gauche et droite à gauche, et les boutons X, A, B et Y dans le sens horaire à partir de midi à droite. À l'arrière de la manette se trouvent les boutons L1, L2, R1 et R2 respectivement à gauche et à droite.

Bouton

Commande

buttonA

controller_1.buttonA.pressing() — Le bouton A

buttonB

controller_1.buttonB.pressing() — Le bouton B

buttonX

controller_1.buttonX.pressing() — Le bouton X

buttonY

controller_1.buttonY.pressing() — Le bouton Y

buttonDown

controller_1.buttonDown.pressing() — Le bouton Bas

buttonUp

controller_1.buttonUp.pressing() — Le bouton Haut

buttonLeft

controller_1.buttonLeft.pressing() — Le bouton gauche

buttonRight

controller_1.buttonRight.pressing() — Le bouton Droite

buttonL1

controller_1.buttonL1.pressing() — Le bouton L1

buttonL2

controller_1.buttonL2.pressing() — Le bouton L2

buttonR1

controller_1.buttonR1.pressing() — Le bouton R1

buttonR2

controller_1.buttonR2.pressing() — Le bouton R2

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

# Turn right while L1 is pressed
while True:
    if controller_1.buttonL1.pressing():
        drivetrain.turn(RIGHT)
    else:
        drivetrain.stop()

    wait(20, MSEC)

.position#

.position renvoie la position d’un axe de joystick sous forme d’un nombre compris entre -100 et 100.

Cette méthode doit être appelée sur un objet axe spécifique, tel que controller_1.axis1.

Utilisation :
L’un des objets d’axe disponibles peut être utilisé avec cette méthode :

Une manette VEX V5 avec les axes autour des joysticks étiquetés. Les axes 1 et 2 sont autour du joystick droit, et les axes 3 et 4 sont autour du joystick gauche.

Axe

Commande

axis1

controller_1.axis1.position() — Axe horizontal du joystick droit

axis2

controller_1.axis2.position() — Axe vertical du joystick droit

axis3

controller_1.axis3.position() — Axe vertical du joystick gauche

axis4

controller_1.axis4.position() — Axe horizontal du joystick gauche

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

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

Rappels#

.pressed#

La commande .pressed exécute une fonction lorsque le bouton spécifié est enfoncé. Une fois utilisée, cette fonction s’exécutera automatiquement à chaque pression sur ce bouton.

Utilisation :
L’un des objets bouton disponibles peut être utilisé avec cette méthode :

Faces avant et arrière de la manette V5, les boutons étant surlignés en jaune. Sur la face avant de la manette se trouvent les boutons fléchés haut, bas, gauche et droite à gauche, et les boutons X, A, B et Y dans le sens horaire à partir de midi à droite. À l'arrière de la manette se trouvent les boutons L1, L2, R1 et R2 respectivement à gauche et à droite.

Bouton

Commande

buttonA

controller_1.buttonA.pressed(callback, arg) — Le bouton A

buttonB

controller_1.buttonB.pressed(callback, arg) — Le bouton B

buttonX

controller_1.buttonX.pressed(callback, arg) — Le bouton X

buttonY

controller_1.buttonY.pressed(callback, arg) — Le bouton Y

buttonDown

controller_1.buttonDown.pressed(callback, arg) — Le bouton Bas

buttonUp

controller_1.buttonUp.pressed(callback, arg) — Le bouton Remonter

buttonLeft

controller_1.buttonLeft.pressed(callback, arg) — Le bouton gauche

buttonRight

controller_1.buttonRight.pressed(callback, arg) — Le bouton Droite

buttonL1

controller_1.buttonL1.pressed(callback, arg) — Le bouton L1

buttonL2

controller_1.buttonL2.pressed(callback, arg) — Le bouton L2

buttonR1

controller_1.buttonR1.pressed(callback, arg) — Le bouton R1

buttonR2

controller_1.buttonR2.pressed(callback, arg) — Le bouton R2

Paramètre

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.

# Drive forward when A is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 100, MM)

controller_1.buttonA.pressed(drive_forward)

.released#

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

Utilisation :
L’un des objets bouton disponibles peut être utilisé avec cette méthode :

Faces avant et arrière de la manette V5, les boutons étant surlignés en jaune. Sur la face avant de la manette se trouvent les boutons fléchés haut, bas, gauche et droite à gauche, et les boutons X, A, B et Y dans le sens horaire à partir de midi à droite. À l'arrière de la manette se trouvent les boutons L1, L2, R1 et R2 respectivement à gauche et à droite.

Bouton

Commande

buttonA

controller_1.buttonA.released(callback, arg) — Le bouton A

buttonB

controller_1.buttonB.released(callback, arg) — Le bouton B

buttonX

controller_1.buttonX.released(callback, arg) — Le bouton X

buttonY

controller_1.buttonY.released(callback, arg) — Le bouton Y

buttonDown

controller_1.buttonDown.released(callback, arg) — Le bouton Down

buttonUp

controller_1.buttonUp.released(callback, arg) — Le bouton Remonter

buttonLeft

controller_1.buttonLeft.released(callback, arg) — Le bouton Gauche

buttonRight

controller_1.buttonRight.released(callback, arg) — Le bouton Droite

buttonL1

controller_1.buttonL1.released(callback, arg) — Le bouton L1

buttonL2

controller_1.buttonL2.released(callback, arg) — Le bouton L2

buttonR1

controller_1.buttonR1.released(callback, arg) — Le bouton R1

buttonR2

controller_1.buttonR2.released(callback, arg) — Le bouton R2

Paramètre

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 événements avec des paramètres pour plus d’informations.

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

controller_1.buttonA.released(back_up)

.changed#

La fonction changed (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.

Utilisation :
L’un des objets d’axe disponibles peut être utilisé avec cette méthode :

Une manette VEX V5 avec les axes autour des joysticks étiquetés. Les axes 1 et 2 sont autour du joystick droit, et les axes 3 et 4 sont autour du joystick gauche.

Axe

Commande

axis1

controller_1.axis1.changed(callback, arg) — Axe horizontal du joystick droit

axis2

controller_1.axis2.changed(callback, arg) — Axe vertical du joystick droit

axis3

controller_1.axis3.changed(callback, arg) — Axe vertical du joystick gauche

axis4

controller_1.axis4.changed(callback, arg) — Axe horizontal du joystick gauche

Paramètre

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 événements avec des paramètres pour plus d’informations.

# Play a sound when the left joystick moves
def tada_sound():
    brain.play_sound(SoundType.TADA)

controller_1.axis4.changed(tada_sound)

Constructeurs#

Controller#

Controller crée un objet Contrôleur. La création manuelle d’un objet Contrôleur n’est nécessaire que lors de la configuration d’un contrôleur en dehors de VEXcode.

Usage:
Controller(controller_type)

Paramètre

Description

controller_type

Facultatif. Le type de contrôleur à créer : PRIMARY pour le contrôleur principal connecté au cerveau ou PARTNER pour le deuxième contrôleur connecté au cerveau.

# Create the primary Controller
controller_1 = Controller(PRIMARY)

# Create a partner Controller
controller_2 = Controller(PARTNER)