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.
Résumé de l'option 1 : attribution de boutons dans la configuration de l'appareil
Avantages |
Limites |
Exemple de situation |
|
|
|
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.
Téléchargez le fichier du projet VEXcode V5 "Option 2" >
Explication du code de l’option 2.
Morceau de code |
Explication |
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. |
|
|
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. |
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 |
|
|
|
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.
Téléchargez le fichier du projet VEXcode V5 "Option 3" >
Explication du code de l’option 3.
Morceau de code |
Explication |
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. |
|
|
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. |
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 |
|
|
|