Comment utiliser des boutons du Joystick pour contrôler les moteurs ou les solénoïdes

Comme tous nous avons nos systèmes d’entraînement fonctionnels, nous allons à présent connecter nos périphériques tels que les moteurs et les solénoïdes. À cet effet, nous allons généralement utiliser des boutons de joystick afin de contrôler ces périphériques. Pour commencer, nous allons passer en revue plusieurs façons de contrôler les dispositfs avec des boutons de joystick.

Saviez-vous que vous pouvez cliquer et faire glisser un extrait de code VI d’un document comme celui-ci directement dans votre code LabVIEW? Essayez-le avec les extraits de ce document.

Configuration:

Quelle que soit la configuration, vous devrez ajouter un, deux ou plusieurs (si vous êtes vraiment motivé) joysticks à l’instrument virtuel « Begin.vi ». Le premier exemple utilise 2 joysticks alors que les autres n’en utilisent qu’un. Donnez à chacun un nom unique afin que vous puissiez l’utiliser à d’autres endroits, comme l’extrait de code ci-dessous. Je les ai nommés « LeftStick » et « RightStick » parce qu’ils sont sur les côtés gauche et droit de mon bureau. Si vos joysticks sont déjà configurés, super! Vous pouvez sauter cette étape.

../../../../_images/setup1.png

Le reste du code dans ce document sera placé dans le « Teleop.VI ». C’est là que nous allons programmer nos boutons de joystick pour contrôler différents aspects de nos moteurs ou solénoïdes.

Scénario 1

« Je veux qu’un moteur tourne dans un sens quand j’appuie sur un bouton et l’autre façon quand j’appuie sur un autre bouton. »

Ce code utilise le bouton 0 sur deux joysticks différents pour contrôler le même moteur. Si le bouton 0 sur LeftStick est appuyé, le moteur se déplace vers l’arrière, et si le bouton 0 sur RightStick est appuyé, le moteur se déplace vers l’avant. Si les deux boutons sont appuyés ou si aucun des deux boutons n’est appuyé, le moteur ne bouge pas. Ici, j’ai nommé ma référence moteur « Motor5 », mais vous pouvez nommer votre moteur comme vous le voulez dans le « Begin.vi ».

../../../../_images/1-a.png

Vous pouvez utiliser plusieurs boutons à partir du même joystick pour le contrôle. Pour en voir un exemple, regardez l’extrait de code VI suivant ou l’extrait de code VI dans le scénario 2.

../../../../_images/1-b.png

Ici, j’ai utilisé les boutons 0 et 2 du joystick, mais sentez-vous à l’aise d’utiliser tous les boutons dont vous avez besoin.

Scénario 2

« Je veux des vitesses de déplacement variées pour différents boutons de joystick. »

Cet exemple pourrait être utile si vous avez besoin d’avoir un même moteur faire différentes choses en fonction des boutons que vous appuyez. Par exemple, disons que mon joystick a un déclencheur (bouton 0) et 4 boutons par dessus (boutons 1 à 4). Dans ce cas, les boutons suivants peuvent avoir les fonctions suivantes :

  • bouton 1 - recule à mi-vitesse

  • bouton 2 - avance à mi-vitesse

  • bouton 3 - recule à 1/4 de vitesse

  • bouton 4 - avance à 1/4 de vitesse

  • déclencheur - pleine vitesse en avant! (en avant à pleine vitesse)

Nous prenons ensuite le tableau booléen à partir de « JoystickGetValues.vi » et on le relie à un nœud « Boolean Array to Number » (Numeric Palette-Conversion Palette). Ce qui convertit le tableau booléen en un nombre que nous pouvons alors utiliser. Relier ce nombre à une structure case.

Chaque cas correspond à une représentation binaire des valeurs du tableau. Dans cet exemple, chaque cas correspond à une combinaison d’un seul bouton. Nous avons ajouté six cas : 0 (tous les boutons sont à OFF), 1 (bouton 0 sur ON), 2 (bouton 1 sur ON), 4 (bouton 2 sur ON), 8 (bouton 3 sur ON), et 16 (bouton 4 sur ON). Notez que nous avons sauté la valeur 3. 3 correspondrait aux boutons 0 et 1 appuyés en même temps. Nous ne l’avons pas défini dans nos requis, donc nous allons laisser le cas par défaut le gérer.

Il pourrait être utile d’examiner le document d’aide sur la structure case LabVIEW 2014 ici :

https://zone.ni.com/reference/en-XX/help/371361L-01/glang/case_structure/

Il ya aussi 3 tutoriels communautaires sur les structures case ici:

https://forums.ni.com/t5/Curriculum-and-Labs-for/Unit-3-Case-Structures-Lesson-1/ta-p/3505945?profile.language=en

https://forums.ni.com/t5/Curriculum-and-Labs-for/Unit-3-Case-Structures-Lesson-2/ta-p/3505933?profile.language=en

https://forums.ni.com/t5/Curriculum-and-Labs-for/Unit-3-Case-Structures-Lesson-3/ta-p/3505979?profile.language=en

../../../../_images/21.png

Comme nos requis étaient simples, nous n’avons besoin que d’une seule constante dans chaque cas. Pour le cas 1 (en avant toutes) nous utilisons un 1, pour le cas 2 (en arrière à moitié) nous utilisons un -0,5, etc. Nous pouvons utiliser n’importe quelle valeur constante entre 1 et -1. J’ai laissé le cas 0 comme cas par défaut, donc si plusieurs boutons sont appuyés (n’importe quel état indéfini a été atteint) le moteur s’arrêtera. Vous êtes bien sûr libre de personnaliser ces états comme vous le souhaitez.

Scénario 3

« Je veux contrôler un solénoïde à l’aide des boutons de mon joystick. »

Maintenant, nous sommes familiers avec la façon dont on peut regrouper les boutons d’un joystick dans un tableau de booleans. Nous devons indexer ce tableau pour obtenir le bouton qui nous intéresse, et relier ce boolean à un nœud sélectionné. Étant donné que le « Solenoid Set.vi » nécessite un Enum comme entrée, la façon la plus simple d’obtenir l’enum est de cliquer avec le bouton droit sur l’entrée « Value » de « Solenoid Set.vi » et sélectionnez « Create Constant ». Dupliquez cette constante et relier une copie avec le terminal True et une autre avec le terminal False du nœud sélectionné. Ensuite, relier la sortie du nœud sélectionné avec l’entrée « Value » du solenoid VI.

../../../../_images/31.png

Ayez du plaisir en robotique!