Contrôleur#

Introduction#

La manette VEX EXP est équipée de boutons et de deux joysticks. Ses méthodes permettent de détecter les appuis sur les boutons, de lire les mouvements des joysticks, d’activer ou de désactiver les actions configurées, ou encore d’exécuter des fonctions lors d’événements survenant sur la manette.

Les actions de contrôleur configurées correspondent aux comportements définis dans le menu Appareils. Utilisez la commande remote_control_code_enabled pour activer ou désactiver temporairement ces actions pendant un projet.

Cette page utilise le contrôleur controller selon vos besoins.

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

Action — Activer ou désactiver les actions configurées 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.

Action#

remote_control_code_enabled#

La variable remote_control_code_enabled active ou désactive les actions de la manette 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 par le 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.axis3.position() > 0:
        drivetrain.drive(FORWARD)
    elif controller.axis3.position() < 0:
        drivetrain.drive(REVERSE)
    # Press A to use controller configured actions again
    elif controller.buttonA.pressing():
        break
    else:
        drivetrain.stop()

    wait(20, MSEC)

remote_control_code_enabled = True

Getters#

.pressing#

.pressing renvoie 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 controller.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 :

La face avant et supérieure de la manette EXP, avec les joysticks, les flèches directionnelles et les boutons d'action mis en évidence en jaune. Sur la surface de la manette se trouvent deux joysticks, un à gauche et un à droite, avec les flèches directionnelles haut et bas à gauche et les boutons A et B à droite. Sur le dessus de la manette se trouvent les boutons L1 et L2 à gauche et R1 et R2 à droite.

Bouton

Commande

buttonA

controller.buttonA.pressing() — Le bouton A

buttonB

controller.buttonB.pressing() — Le bouton B

buttonDown

controller.buttonDown.pressing() — Le bouton Bas

buttonUp

controller.buttonUp.pressing() — Le bouton Haut

buttonL1

controller.buttonL1.pressing() — Le bouton L1

buttonL2

controller.buttonL2.pressing() — Le bouton L2

buttonL3

controller.buttonL3.pressing() — Le bouton L3

buttonR1

controller.buttonR1.pressing() — Le bouton R1

buttonR2

controller.buttonR2.pressing() — Le bouton R2

buttonR3

controller.buttonR3.pressing() — Le bouton R3

Paramètres

Description

Cette méthode ne comporte aucun paramètre.

# Turn right while L1 is pressed
while True:
    if controller.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.axis1.

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

Face avant de la manette EXP, les numéros des axes des joysticks étant mis en évidence en rouge. Sur la surface de la manette, le joystick gauche est identifié par l'axe 4 (déplacements latéraux) et l'axe 3 (déplacements verticaux), tandis que le joystick droit est identifié par l'axe 1 (déplacements latéraux) et l'axe 2 (déplacements verticaux).

Axe

Commande

axis1

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

axis2

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

axis3

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

axis4

controller.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.axis4.position() > 10:
        drivetrain.turn(RIGHT)
    elif controller.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 :

La face avant et supérieure de la manette EXP, avec les joysticks, les flèches directionnelles et les boutons d'action mis en évidence en jaune. Sur la surface de la manette se trouvent deux joysticks, un à gauche et un à droite, avec les flèches directionnelles haut et bas à gauche et les boutons A et B à droite. Sur le dessus de la manette se trouvent les boutons L1 et L2 à gauche et R1 et R2 à droite.

Bouton

Commande

buttonA

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

buttonB

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

buttonDown

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

buttonUp

controller.buttonUp.pressed(callback, arg) — Le bouton Haut

buttonL1

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

buttonL2

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

buttonL3

controller.buttonL3.pressed(callback, arg) — Le bouton L3

buttonR1

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

buttonR2

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

buttonR3

controller.buttonR3.pressed(callback, arg) — Le bouton R3

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 R1 is pressed
def drive_forward():
    drivetrain.drive_for(FORWARD, 200, MM)

controller.buttonR1.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 :

La face avant et supérieure de la manette EXP, avec les joysticks, les flèches directionnelles et les boutons d'action mis en évidence en jaune. Sur la surface de la manette se trouvent deux joysticks, un à gauche et un à droite, avec les flèches directionnelles haut et bas à gauche et les boutons A et B à droite. Sur le dessus de la manette se trouvent les boutons L1 et L2 à gauche et R1 et R2 à droite.

Bouton

Commande

buttonA

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

buttonB

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

buttonDown

controller.buttonDown.released(callback, arg) — Le bouton Bas

buttonUp

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

buttonL1

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

buttonL2

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

buttonL3

controller.buttonL3.released(callback, arg) — Le bouton L3

buttonR1

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

buttonR2

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

buttonR3

controller.buttonR3.released(callback, arg) — Le bouton R3

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.

# Stop driving when R1 is released
def stop_driving():
    drivetrain.stop()

controller.buttonR1.released(stop_driving)

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

Face avant de la manette EXP, les numéros des axes des joysticks étant mis en évidence en rouge. Sur la surface de la manette, le joystick gauche est identifié par l'axe 4 (déplacements latéraux) et l'axe 3 (déplacements verticaux), tandis que le joystick droit est identifié par l'axe 1 (déplacements latéraux) et l'axe 2 (déplacements verticaux).

Axe

Commande

axis1

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

axis2

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

axis3

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

axis4

controller.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 beep():
    brain.play_sound(SoundType.TADA)

controller.axis3.changed(beep)

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

Paramètres

Description

Ce constructeur n’a pas de paramètres.

# Create a Controller object
my_controller = Controller()