Cómo utilizar los botones del Joystick para controlar motores o solenoides

A medida que todos ponemos en funcionamiento nuestros sistemas, pasaremos a conectar nuestros dispositivos auxiliares, como motores y solenoides. Con esto, generalmente usaremos botones de joystick para controlar estos dispositivos. Para comenzar con esto, veremos varias formas de controlar dispositivos con botones del joystick.

¿Sabía que puede hacer clic y arrastrar un fragmento de VI desde un documento como este directamente a su código de LabVIEW? Pruébelo con los fragmentos de este documento.

Preparación:

Independientemente de la configuración, deberá agregar uno, dos o más (si está realmente emocionado) joysticks al «Begin.vi». El primer ejemplo usa 2 joysticks y los otros solo usan uno. Dé a cada uno un nombre único para que podamos usarlo en otros lugares, como el fragmento de abajo. Los llamé «LeftStick» y «RightStick» porque están en los lados izquierdo y derecho de mi escritorio. Si sus joysticks ya están configurados, ¡genial! Puede omitir este paso.

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

El resto del código en este documento se colocará en el «Teleop.VI» Aquí es donde estaremos programando nuestros botones de joystick para controlar diferentes aspectos de nuestros motores o solenoides.

escenario 1

«Quiero que un motor se mueva en una dirección cuando presione un botón y en la otra cuando presione un botón diferente».

Este código usa el botón 0 en dos joysticks diferentes para controlar el mismo motor. Si se presiona el botón 0 en LeftStick, el motor se mueve hacia atrás, y si se presiona el botón 0 en RightStick, el motor avanza. Si se presionan ambos botones o no se presiona ninguno, el motor no se mueve. Aquí llamé a mi motor de referencia «Motor5», pero puedes nombrar tu motor como quieras en el «Begin.vi»

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

Es posible que desee utilizar varios botones del mismo joystick para su control. Para ver un ejemplo de esto, mire el siguiente fragmento de VI o el fragmento de VI en el Escenario 2.

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

Aquí usé los botones de joystick 0 y 2, pero siéntase libre de usar los botones que necesite.

Escenario 2

«Quiero que los diferentes botones del joystick se muevan a distintas velocidades».

Este ejemplo podría ser útil si necesita que un motor haga diferentes cosas según los botones que presione. Por ejemplo, digamos que mi joystick tiene un gatillo (botón 0) y 4 botones en la parte superior (botones 1 a 4). En este caso, los siguientes botones deben tener las siguientes funciones:

  • botón 1 - retroceder a la mitad de la velocidad

  • botón 2 - avanzar a la mitad de la velocidad

  • botón 3 - retroceder a 1/4 de velocidad

  • botón 4 - avanzar a 1/4 de velocidad

  • gatillo - ¡adelante a toda velocidad! (avanzar a toda velocidad)

Luego tomaríamos la matriz booleana de «JoystickGetValues.vi» y la conectaríamos a un nodo «Boolean Array to Number» (Paleta numérica de conversión de paleta). Esto convierte la matriz booleana en un número que podemos usar. Conecte este número a una estructura case.

Cada caso corresponde a una representación binaria de los valores de la matriz. En este ejemplo, cada caso corresponde a una combinación de un botón. Agregamos seis casos: 0 (todos los botones apagados), 1 (botón 0 encendido), 2 (botón 1 encendido), 4 (botón 2 encendido), 8 (botón 3 encendido) y 16 (botón 4 encendido). Observe que omitimos el valor 3. 3 correspondería a los botones 0 y 1 presionados al mismo tiempo. No definimos esto en nuestros requisitos, por lo que dejaremos que el caso predeterminado lo maneje.

Puede ser útil revisar el documento de ayuda de estructura Case de LabVIEW 2014 aquí:

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

También hay 3 tutoriales comunitarias sobre estructuras de casos aquí:

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

Dado que nuestros requisitos eran simples, solo necesitamos una única constante en cada caso. Para el caso 1 (completo adelante) usamos un 1, para el caso 2 (medio reverso) usamos -0.5, etc. Podemos usar cualquier valor constante entre 1 y -1. Dejé el caso 0 como predeterminado, por lo que si se presionan varios botones (se alcanzó cualquier estado indefinido) el motor se detendrá. Por supuesto, usted puede personalizar estos estados como quiera.

Escenario 3

«Quiero controlar un solenoide con los botones de mi joystick».

A estas alturas, estamos familiarizados con cómo el joystick genera los botones en una matriz de valores booleanos. Necesitamos indexar esta matriz para obtener el botón que nos interesa y conectar este booleano a un nodo seleccionado. Dado que el «Solenoide Set.vi» requiere un Enum como entrada, la forma más fácil de obtener el enum es hacer clic con el botón derecho en la entrada «Valor» del «Solenoide Set.vi» y seleccionar «Crear constante». Duplique esta constante y conecte una copia al terminal Verdadero y otra al terminal Falso del nodo seleccionado. Luego conecte la salida del nodo de selección a la entrada «Valor» del solenoide VI.

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

¡Feliz Roboteo!