Code de contrôleur personnalisé dans VEXcode V5

L'utilisation du contrôleur peut faciliter la conduite et le déplacement de votre robot pour accomplir une tâche. Cependant, l'utilisation du programme Drive présente des limites et, en fonction de la construction de votre robot ou de la tâche à accomplir, vous souhaiterez peut-être des commandes différentes. Le codage du contrôleur vous permet d'optimiser le contrôleur pour qu'il s'adapte mieux à votre robot et à la tâche à accomplir. Il existe plusieurs façons de coder le contrôleur dans VEXcode V5. Chacune a ses avantages et ses limites, et certaines méthodes sont mieux adaptées à certaines situations en fonction du résultat souhaité.

Cet article vous présentera trois options différentes pour le codage personnalisé du contrôleur dans VEXcode V5. Chaque méthode sera décrite avec ses avantages, ses limites et un exemple de cas d'utilisation pour vous guider dans le choix d'une méthode. Pour les besoins de cet article, tous les exemples de code présentés ont été créés pour Clawbot. Cependant, les mêmes concepts pourraient être appliqués à de nombreuses autres versions trouvées sur et aux versions personnalisées.

Option 1 : attribution de boutons dans la configuration de l'appareil

Cette option est idéale lorsque vous utilisez une version standard, comme un Speedbot ou un Clawbot, et que vous souhaitez être opérationnel rapidement.

Cette option vous permet d'attribuer des moteurs, une transmission ou des groupes de moteurs aux boutons du contrôleur dans la configuration de l'appareil. Pour plus d'informations sur la façon d'attribuer des boutons au contrôleur dans la configuration du périphérique, consultez cet article.

Capture d'écran 2023-07-27 à 12.37.20 PM.png

Résumé de l'option 1 : attribution de boutons dans la configuration de l'appareil

Avantages

Limites

Exemple de situation

  • Installation rapide sans codage nécessaire
  • Méthode la plus simple
  • Facilement réglable
  • Peut attribuer des moteurs individuels, une transmission standard et des groupes de moteurs aux boutons
  • Les affectations de boutons sont limitées au nombre de boutons sur le contrôleur
  • La transmission ne peut pas dépasser 4 moteurs ni être personnalisée (seul un entraînement standard est pris en charge, pas un entraînement H, holonomique ou autre transmission personnalisée)
  • Manipuler une version standard telle qu'un Speedbot, un Clawbot ou une simple modification de ces versions standard. Par exemple, un Speedbot avec une admission fixée à l'avant contrôlée par un groupe moteur.
  • Manipuler rapidement quels boutons correspondent à différents comportements sur le robot sans trop de codage

Option 2 : Utiliser une boucle éternelle

Si vous utilisez une version personnalisée au lieu d’une version standard, ou si vous souhaitez pouvoir personnaliser davantage votre contrôleur, cette option est la bonne. L'utilisation d'une boucle Forever est une excellente introduction pour créer du code personnalisé pour votre contrôleur.

Cette option place toutes les conditions du contrôleur et de ses boutons associés dans une boucle Forever. Cela offre plus de flexibilité, en particulier avec les conceptions de build personnalisées, mais nécessite également une certaine expérience en codage. Cependant, une considération lors de l’utilisation de cette option est la longueur et la complexité de votre projet. Plus de conditions sont ajoutées, plus la pile de code peut devenir longue. Cela signifie que plusieurs blocs doivent être exécutés dans l’ordre, et lorsqu’il y a beaucoup de blocs, cela peut ralentir l’exécution du projet. Une exécution plus lente du projet peut créer un décalage entre l'actionnement des boutons du contrôleur et l'observation du comportement du robot.

L'exemple spécifique présenté ci-dessous est une façon d'utiliser une boucle Forever avec un robot de conception personnalisée (tel qu'un robot avec une transmission personnalisée) pour conduire le robot et manipuler la griffe et le bras afin d'interagir avec les objets.

Capture d'écran 2023-07-27 à 12.51.23 PM.png

Téléchargez le fichier du projet VEXcode V5 "Option 2" >

Explication du code de l’option 2.

Morceau de code

Explication

Capture d'écran 2023-07-27 à 12h53h38.png

Un Clawbot a été utilisé pour cet exemple de code. Lorsque les boutons du contrôleur sont utilisés pour lever et abaisser le bras, dès que le bouton est relâché, en raison de la gravité, le bras retombe. Régler le bras et la griffe sur « maintenir » garantira que le bras et la griffe resteront en place même après que les boutons du contrôleur aient été relâchés.

Capture d'écran 2023-07-27 à 12.54.05 PM.png contrôleur v5.png

Un Clawbot a été utilisé pour cet exemple de code. Lorsque les boutons du contrôleur sont utilisés pour lever et abaisser le bras, dès que le bouton est relâché, en raison de la gravité, le bras retombe. Régler le bras et la griffe sur « maintenir » garantira que le bras et la griffe resteront en place même après que les boutons du contrôleur aient été relâchés.

Une boucle Forever est utilisée afin de vérifier en permanence quels boutons sont enfoncés sur le contrôleur.

Les blocs [Définir la vitesse du moteur] sont utilisés pour régler la vitesse du moteur à la position du contrôleur actuel le long des axes 2 et 3. C'est l'équivalent de mettre une voiture en marche. Cela ne fait pas nécessairement bouger la voiture, cela la fixe simplement.

Chaque axe du joystick renvoie une valeur comprise entre -100 et +100 et renvoie une valeur zéro lorsqu'il est centré. Cela signifie alors que les axes du joystick, lorsqu'ils sont poussés, équivalent à -100 % à 100 %. Plus les axes sont poussés vers 100 ou -100, plus le moteur tournera vite.

Le bloc [Spin] est ensuite utilisé pour déplacer réellement le moteur. C'est l'équivalent d'appuyer sur l'accélérateur sur la voiture une fois la direction définie. Cela permet à chaque moteur d'être contrôlé par l'un des quatre axes du contrôleur.

Capture d'écran 2023-07-27 à 12h54h40.png

Un Clawbot a été utilisé pour cet exemple de code. Lorsque les boutons du contrôleur sont utilisés pour lever et abaisser le bras, dès que le bouton est relâché, en raison de la gravité, le bras retombe. Régler le bras et la griffe sur « maintenir » garantira que le bras et la griffe resteront en place même après que les boutons du contrôleur aient été relâchés.

Le bloc [If then else if then else] est utilisé pour mapper certains comportements aux boutons enfoncés ou relâchés sur le contrôleur. Dans cette section de code, les conditions définies sont si les boutons Haut ou Bas sont enfoncés. Si tel est le cas, certains comportements se produiront, comme le fait de lever et d’abaisser les bras. Il y a aussi la partie else de la condition, si aucun bouton n'est enfoncé, le bras est réglé pour arrêter de bouger.

Notez que la section suivante du code du projet Claw suit la même explication.

Résumé de l'option 2 : utilisation d'une boucle éternelle

Avantages

Limites

Exemple de situation

  • Peut s'adapter aux constructions personnalisées, en particulier aux transmissions comportant plus de 4 moteurs
  • Peut attribuer plusieurs comportements à un seul bouton
  • Peut attribuer des comportements à différents axes du contrôleur (par opposition aux seules options Left Arcade, Right Arcade, Split Arcade et Tank Drive dans la configuration de l'appareil)
  • Nécessite une certaine quantité de connaissances en codage (conditions, boucles et connaissance des boutons/joysticks du contrôleur)
  • Possibilité d'exécution plus lente du projet ou de retard dans le temps de réponse des boutons. Étant donné que toutes les commandes sont contenues dans une seule boucle Forever, l'exécution du code peut s'exécuter lentement en fonction des conditions définies et de la longueur du code.
  • Utilisation du contrôleur avec un robot personnalisé, en particulier avec une transmission non standard
  • Lorsque vous souhaitez attribuer plusieurs comportements à un seul bouton. Par exemple, lorsque vous appuyez sur le bouton Haut, la griffe peut s'ouvrir, avancer, puis se refermer autour d'un objet.

Option 3 : Utiliser des événements

Si vous souhaitez beaucoup de personnalisation de votre contrôleur, l'utilisation d'événements est la meilleure option pour vous. Une simple pression sur un bouton peut déclencher plusieurs comportements du robot, comme appuyer sur un bouton pour ouvrir la griffe, lever le bras et avancer sur une distance définie. Essayer de coder plusieurs comportements par bouton dans une boucle Forever entraînerait un ralentissement considérable de l'exécution du projet – l'utilisation d'événements vous permet de le faire plus efficacement.

Cette option utilise des événements pour interrompre le flux du projet. Ceci est similaire à l'utilisation d'une boucle Forever, mais permet au code d'être plus organisé, de sorte que l'exécution du bouton ait un temps de réponse plus rapide. Un temps de réponse plus rapide signifie que vous ne verrez pas de décalage entre l'appui sur les boutons du contrôleur et l'observation du comportement du robot. Cet exemple montre les mêmes comportements que le projet précédent, mais en utilisant les événements au lieu de la boucle Forever.

Capture d'écran 2023-07-27 à 13.17.23.png

Téléchargez le fichier du projet VEXcode V5 "Option 3" >

Explication du code de l’option 3.

Morceau de code

Explication

Capture d'écran 2023-07-27 à 13h18h55.png

Un Clawbot a été utilisé pour cet exemple de code. Lorsque les boutons du contrôleur sont utilisés pour lever et abaisser le bras, dès que le bouton est relâché, en raison de la gravité, le bras retombe. Régler le bras et la griffe sur « maintenir » garantira que le bras et la griffe resteront en place même après que les boutons du contrôleur aient été relâchés.

Capture d'écran 27/07/2023 à 13/19/06.png contrôleur v5.png

Un Clawbot a été utilisé pour cet exemple de code. Lorsque les boutons du contrôleur sont utilisés pour lever et abaisser le bras, dès que le bouton est relâché, en raison de la gravité, le bras retombe. Régler le bras et la griffe sur « maintenir » garantira que le bras et la griffe resteront en place même après que les boutons du contrôleur aient été relâchés.

{When controller axis} Les blocs d'événements sont utilisés pour déclencher certains comportements lorsque l'un des quatre axes du contrôleur est modifié à l'aide des joysticks.

Les blocs [Définir la vitesse du moteur] sont utilisés pour régler la vitesse du moteur à la position du contrôleur actuel le long des axes A et D. C'est l'équivalent de mettre une voiture en marche. Cela ne fait pas nécessairement bouger la voiture, cela la fixe simplement.

Chaque axe du joystick renvoie une valeur comprise entre -100 et +100 et renvoie une valeur zéro lorsqu'il est centré. Cela signifie alors que les axes du joystick, lorsqu'ils sont poussés, équivalent à -100 % à 100 %. Plus les axes sont poussés vers 100 ou -100, plus le moteur tournera vite.

Le bloc [Spin] est ensuite utilisé pour déplacer réellement le moteur. C'est l'équivalent d'appuyer sur l'accélérateur sur la voiture une fois la direction définie. Cela permet à chaque moteur d'être contrôlé par l'un des quatre axes du contrôleur.

Capture d'écran 27/07/2023 à 13h19/20.png

Un Clawbot a été utilisé pour cet exemple de code. Lorsque les boutons du contrôleur sont utilisés pour lever et abaisser le bras, dès que le bouton est relâché, en raison de la gravité, le bras retombe. Régler le bras et la griffe sur « maintenir » garantira que le bras et la griffe resteront en place même après que les boutons du contrôleur aient été relâchés.

{When controller axis} Les blocs d'événements sont utilisés pour mapper certains comportements aux boutons enfoncés ou relâchés sur le contrôleur. Dans cette section de code, les conditions définies sont si les boutons Haut ou Bas sont enfoncés. Si tel est le cas, certains comportements se produiront, comme lever, baisser ou arrêter le bras.

Notez que la dernière section de code du projet pour Claw suit la même explication.

Résumé de l'option 3 : utilisation des événements

Avantages

Limites

Exemple de situation

  • Peut s'adapter aux constructions personnalisées, en particulier aux transmissions comportant plus de 4 moteurs
  • Peut attribuer plusieurs comportements à un seul bouton
  • Peut attribuer des comportements à différents axes du contrôleur (par opposition aux seules options Left Arcade, Right Arcade, Split Arcade et Tank Drive dans la configuration de l'appareil)
  • Exécution de code plus rapide et donc réactivité des boutons (car chaque condition est appelée séparément et n'est pas intégrée dans une seule pile de code)
  • Nécessite la plus grande connaissance en codage des options (conditionnelles, boucles, événements et connaissance des boutons/joysticks du contrôleur)
  • Utilisation du contrôleur avec un robot personnalisé, en particulier avec une transmission non standard
  • Lorsque vous souhaitez attribuer plusieurs comportements à un seul bouton sans décalage. Par exemple, lorsque vous appuyez sur le bouton Haut, la griffe peut s'ouvrir, avancer, puis se refermer autour d'un objet.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: