Hola a todos, en esta entrada vamos a realizar un proceso
muy parecido al que os he mostrado en la anterior entrada, la diferencia se encuentra en que, en la
entrada de 1 entrada 1 línea, tan solo leíamos una línea, sin embargo en esta
entrada vamos a leer el puerto entero.
Para hacer eso obviamente lo primero que tenemos que tener
es algún indicador de los puertos, no?, pues para eso lo que haremos será crear
un array de leds, cada uno simulando un puerto o salida digital del DAQ.
Aquí os diré la manera que tengo que de crear yo éste array,
en primer lugar nos iremos a las funciones de programming, y seleccionamos “array”,
dentro de esa paleta elegimos Rotate 1D array y la colocamos en el VI.
Esta función lo que hace principalmente se traduce a “rota
el numero de lugares y en la dirección indicada por “n”. Una vez esté sacada
daremos en la pestaña que pone “array (last n elements first) “ y ahí
añadiremos un control, entonces lo que nos quedará por hacer será, desde el front
panel, dar al botón derecho, irnos a replace y seleccionar un LED.
Entonces veréis que al hacerlo se nos crea un array de 1
solo led, si nos acercamos al borde, nos deja hacer crecer ése array. Tan solo
necesitamos 12, por lo que lo alargamos 11 veces para tenerlos, y listo.
Ahora que ya tenemos nuestro array, nos iremos al inicio del
diagrama de bloques, que comenzará como siempre, con la creación de un canal,
por lo que daremos a la función “create cannel”. Y lo diseñaremos de la
siguiente manera.
Lo primero que haremos será configurarlo como entrada
digital, además de decir que va a ser 1 solo canal pero todas las líneas. Por
otro lado le añadiremos la ruta en la pestaña que pone “line”.
Y entonces meteremos esta sentencia “Dev1/port0/line0:7,
Dev1/port1/line0:3”.
Como podéis figuraros, con ella hago que tanto el puerto 0
como el 1 de mi DAQ, de las líneas 0 a 7 y 0 a 3 pasan a estar en
funcionamiento.
Una vez tengamos esto le crearemos una condición de start,
para que se inicie.
Y después nos ponemos a crear un while con las siguientes
características.
En primer lugar meteremos la función de “read” y la
configuraremos como “digital/single cannel/simple simple/ boolean 1D”.
Después le añadiremos en la salida de “data” un reverse
array, para cambiar el bit más significativo a la izquierda, unimos el array de
leds a la salida del reverse, añadimos un retardo de 10ms y ponemos una puerta
or en la que unimos el stop y la línea de error, de tal manera que se salga
cuando le demos al control de stop o cuando haya un error.
Entonces una vez tengamos esto, podremos darle a run y,
observar que justo al darle, todos los leds permanecen encendidos. Esto, si os
recordáis es porque internamente la tecnología del daq es TTL y por tanto, al estar el pin al aire,
se interpreta como un 1 lógico.
Sin embargo, cogemos una de esas salidas, y la conectamos a
masa “gnd” veremos que ésta se apaga inmediatamente.
Esto es por justo lo
contrario, al conectarse a masa, el 1 lógico pasa a ser 0.
Entonces si conectamos cualquiera de los puertos a masa, veréis que el correspondiente se apaga, por lo que os dije, al unirse a masa, pasa del 1 lógico al 0, y por tanto se queda apagado. Como os enseño en la imagen, la línea 3 del puerto 1, se apaga, porque la he conectado a masa.
Esto sería todo en esta entrada de cómo manejar más de una línea con tan solo un canal, espero que os haya gustado, en cuanto pueda os subo la descarga del VI. Un saludo!
DESCARGA
DESCARGA
No hay comentarios:
Publicar un comentario