LabVIEW para usuarios del NXT (II)

LabVIEW NXT- PortadaEn el artículo LabVIEW para usuarios del NXT (I) vimos como crear un VI, y empezamos con un programa de prueba (el famoso “Hola Mundo”). En el artículo de hoy, LabVIEW para usuarios del NXT (II), vamos a ahondar un poco más en el manejo básico de LabVIEW, y ver manejo de motores y de algún sensor.

Manejo de Motores:

Para manejar el motor la función que debemos usar es Motor, que la podéis encontrar haciendo click derecho en el Block Diagram y seleccionando NXT I/O → Motor:

LabVIEW NXT- 1
Una vez coloquemos nuestro motor podemos observar que tiene varios modos de funcionamiento con distintas entradas y salidas. Para cambiar entre estos modos tenemos que clickear en el menú desplegable. Los modos son los siguientes:

Motor On: Forward

LabVIEW NXT- 2
Hace que los motores se muevan marcha adelante con la potencia que escojamos. En Output Port escogemos el Puerto (Port A, Port B, Port C o todos), en Power la potencia deseada, y los demás conectores son para el flujo del programa como ya vimos en el artículo anterior.

Motor On: Reverse

LabVIEW NXT- 3
Funciona de manera parecida al anterior, solo que con los motores marcha atrás.

Motor Off: Brake

LabVIEW NXT- 4
El motor frena, tratando de detenerse lo más rápido posible. En Port elegimos el puerto del motor que deseamos que frene.

Motor Off: Coast

LabVIEW NXT- 5
El motor deja de acelerar, volviendo poco a poco a la inmovilidad. No es un frenazo brusco, por lo que se seguirá desplazando hasta detenerse. Igual que en el anterior elegimos el puerto del motor.

A la hora de elegir a que puertos están conectados, o con que potencia van a moverse, tenemos que enganchar los valores deseados a las entradas (ya sea mediante constantes, controles….). La manera más cómoda de hacerlo es creando estas constantes, controladores o indicadores ya enganchados al las salidas y entradas. Para ello haced click derecho en la entrada o salida deseada y seleccionad Create y lo que queráis enganchar:

LabVIEW NXT- 6
Manejo de Sensores:

Para manejar los sensores utilizamos la función Sensor, que la podéis encontrar haciendo click derecho en el Block Diagram y seleccionando NXT I/O → Sensor. En este caso tenemos muchos sensores distintos disponibles, aunque no vamos a ver todos aquí. De momento me centraré en los dos más simples, el de contacto y el de luz.

Contacto: Pressed

LabVIEW NXTContacto
Nos devuelve si el sensor de contacto está presionado o no (es un valor booleano). Tenemos que decirle a que puerto de sensores está conectado (Port 1, Port 2, Port 3 o Port 4).

Luz: Luz encendida

LabVIEW NXT Luz On
El sensor de luz nos devuelve un valor que representa la cantidad de luz ambiente que detecta. En este caso el sensor enciende una pequeña luz que le sirve para ver mejor, reflectando esta luz contra objetos cercanos por ejemplo, lo que sirve para distinguir colores. Hay que decir a que puerto está conectado.

Luz: Luz apagada

LabVIEW NXT Luz Off
De funcionamiento parecido al anterior esta vez actúa con su luz apagada, lo cual nos sirve para detectar luz ambiente, y saber por ejemplo que parte de una habitación está más iluminada (ya que al no tener el sensor su luz encendida, esta no interfiere en los valores que capta). Sin embargo este modo no sirve para distinguir colores.

Bucles While:

Un bucle es una estructura en la que continuamente se repite lo que haya dentro hasta que se cumpla una condición de salida que elegimos nosotros. Esta condición de salida tiene que devolver un valor booleano (verdadero o falso), como el que devuelve el sensor de contacto. Los búcles While los podéis encontrar en Structures → While Loop:

LabVIEW NXT While
Veréis un ejemplo sencillo de su uso en el programa de prueba que pongo a continuación.

Programa de prueba:

Vamos ha hacer un pequeño programa en el que usaremos un par de motores y un sensor de luz. El programa consistirá en un robot que va girando mientras toma valores con el sensor de luz y los muestra por el Display del NXT. El programa terminará cuando presionemos el sensor de contacto Para que un robot gire un motor ha de moverse más rápido que el otro, esto se consigue aumentando la potencia de uno de los dos. En este caso vamos a tener un robot con los motores A y C, y le daremos mayor potencia al motor A.

Para que se repita la lectura del sensor de luz, y el display del valor en la pantalla del NXT, es necesario meter todo esto en un bucle (while en este caso). Como condición de salida del bucle pondremos que el sensor de contacto esté presionado, de manera que el programa terminará su ejecución cuando esto ocurra. El Block Diagram quedaría así:

LabVIEW NXTPrograma
Cuando este terminado lo compiláis y descargáis al NXT, y lo ejecutáis. Si tenéis alguna duda podéis consultar nuestro foro.

Comments are closed.