Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

comunicar labview con arduino

Hola,

 

          A menos que el primer arduino lo estes usando para adquisición de señales, no tiene sentido usar dos arduinos.

 

          La LIFA esta diseñada para usar arduino como DAQ, yo diria que es para aquellas personas que quieren una tarjeta de adquisición barata para probar alguna idea y no quieren meterse a programar el arduino.

 

           Ahora si por el contrario tu quieres hacer otra cosa mas avanzada y no te quieres meter a ver como funciona la LIFA para modificarla, pues LabVIEW es un lenguaje de programacion totalmente completo con el cual puedes hacer facilmente una comunicación serial con tu arduino para enviarles algunos string, donde desde tu Arduino tambien los puedes recibir y usar para alguna tarea específica que desees sin mucho problema.

 

           Te adjunto un código de la comunicación serial de LabVIEW, solo tienes que indicar el puerto COM donde esta el arduino y la velocidad a la que esta configurado y ejecutarlo, luego colocas una A en string output y le das send y se manda tu A. Es para que veas que no es complicado y lo puedes adaptar facilmente a lo que tienes.

 

           Y en arduino tendrias que hacer algo así:

 

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  byte data;
  while (Serial.available() > 0)
  {
    data = Serial.read();
    if ( data == 'A')
    {
      //Aqui haces el codigo de comunicacion para A usando virtualWire
    }
    else if( data == 'N')
    {
       //En caso de que mandes una 'N'
    }
    else
    {
      //Algun otro caso
    }
  }
}

 

             Te adjunto tu VI control modificado a lo que te digo que intentes, para que lleves la idea clara.

 

Saludos,

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
Descargar todos
Mensaje 41 de 112
7.491 Vistas

Comprendo que el programa que escribiste es esclusivamente la programación de arduino, y que el virtual wire es un programa que interpretar caracteres alfanumericos y que luego seran codificados en bits para ser transmitidos a 2000 bits por segundo.

Pero como podria adaptar una programación ya realizada para arduino con el labview? aun me falta investigar esa parte.

Lo que podria hacer es que arduino cargue un programa de virtual wire, pero esta como se comunica con labview?

Ya que desde labview no puedo enviar 2000 bits por segundo, me gustaria que al presionar un boton (como el diagrama de bloques que hice) esta sea suficiente para activar un estado logico y que internamente el arduino entienda que debe transmitir la letra "A" a 2000 bits por segundo, asi el módulo receptor RF comprendería el mensaje que le estan enviando.

0 kudos
Mensaje 42 de 112
7.486 Vistas

Saludos nuevamente, gracias por el codigo . Hice lo siguiente carge este programa modificado en arduino y realice los cambios en labView, te adjunto el diagrama de bloques. Pero me dice que hay problemas con fimware. Es como que no estoy colocando algo incorrecto y no es correcta  la comunicacion con labview.

Por lo pronto estoy usando 2 arduinos, no me gusta pero por ahora hace lo que quiero, desde labiew activo la tecla que quiero esta a su vez activa un pin de (1er aduino) que a su vez activa un pin de otro (2do) arduino programado con virtual wire, y esta ultima envia la letra ''A" al modulo RF.

En verdad me gustaría usar un solo arduino para hacer esto.

 

#include <VirtualWire.h>

#include "LabVIEWInterface.h" 
int Pin7 = 7;
// me he dado cuenta de que no hace falta
// configurarlo para salida o entrada
int pinTx = 4;

void setup()
{
pinMode(Pin7,INPUT);
vw_set_tx_pin(pinTx);
vw_setup(2000);
Serial.begin(9600);
}

void loop()
{
byte data;
while (Serial.available() > 0)
int estadoPin7 = digitalRead(Pin7);

char *mensaje = "VACIO";
{
data = Serial.read();
if ( data == 'A')
{
mensaje = "A"; // rojo + verde = azul
}
else if( data == 'N')
{
mensaje = "N"; // rojo + verde = azul
}
else
{
//Algun otro caso
}
}
}

 

0 kudos
Mensaje 43 de 112
7.479 Vistas

Hola,

 

        Estas mezclando las cosas y asi nada funciona. Tienes dos opciones:

 

1.- O usas LabVIEW Interface for Arduino que te permite usar arduino como DAQ y que solo funciona grabando LIFA_BASE.ino al arduino o alguna version modificada manteniento la misma estructura.

2.- O te olvidas completamente de LabVIEW Interface tanto en LabVIEW como en el arduino, y haces tu propio codigo personalizado de comunicacion en donde el arduino no sabe que habla con LabVIEW solo sabe que hay un puerto serial por donde se comunica, y LabVIEW no sabe que hay arduino solo que hay un puerto serial que maneja con sus cajas VISA y que por alli manda y recibe datos.

 

      Te adjunto un archivo de labview y otro para el arduino, creo que juntos podrian servir de la manera que quieres, de todas formas revisa la configuracion del virtualwire, y el puerto COM que debes colocar es el mismo que usas para programar el arduino, mientras estes usando el puerto con un programa no lo puedes usar con ningun otro, es decir si lo estas usando con labview no puedes usarlo al mismo tiempo para programar o con el monitor serial del arduino, el puerto es un solo recurso, por eso mismo es que no lo puedes usar al mismo tiempo con VISA y LIFA, sino con solo uno de los dos.

 

Saludos,

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
0 kudos
Mensaje 44 de 112
7.477 Vistas
0 kudos
Mensaje 45 de 112
7.473 Vistas

Hola Luis_AM3C. mira yo también soy nuevo en esto y estoy llevando a cabo un proyecto para mi universidad. Este proyecto consta de una camara web, labview y arduino. Estoy medio perdido con esto esto de la comunicación entre arduino y Labview, sin embargo gracias a los post anteriores creo que he podido acercarme mas a esto.

Bueno mi problema es el siguiente: Con la cámara detecto el movimiento de una esfera por ejemplo (todo procesado por labview gracias a el toolkit de VISION). A partir de esto tengo mi coordenadas en pixeles y son estas las que necesito enviar a arduino para que haga todo un sistema de control.  Me baje la toolkit de arduino y todo el cuento. hize ejercicios para prender un led y apagar con la herramienta LIFA.  Pero resulta que no sé como enviar estos datos desde Labview a mi arduino y que este pueda procesarlos para hacer actuar a un par de servo motores. 

No se si se puede ocupar esta herramienta LIFA conjunto a un Sketch en arduino...  ese es mi problema... como envio estas coordenadas a mi tarjeta.

 

Ojala pueda ayudarme, he estado muy confundido con esto y te lo agradecería mucho si puedieras darme alguna orientación. 

 

MUCHAS GRACIAS!!

0 kudos
Mensaje 46 de 112
7.460 Vistas

Hola Termswar,

 

      En la carpeta "C:\Archivos de programa\National Instruments\LabVIEW 2009\vi.lib\LabVIEW Interface for Arduino\Palette Examples" puedes encontrar un ejemplo para el servo motor usando LIFA. Seria cuestión que hagas todo el procesamiento desde LabVIEW y le mandes a fijar la posición al servo.

 

      Si por el contrario tienes unos requerimientos que no se satisfacen de esa forma, te recomiendo crear un post nuevo para ver si cualquiera de los que usamos este foro te podemos ayudar.

 

Saludos,

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
Mensaje 47 de 112
7.441 Vistas

Muchas gracias, me ayudaste demasiado y aportaste muchos conocimientos en mi y es justo lo que requeria, he probado el codigo y funciona a la perfección, e incluso he agregado unas varianates al codigo arduino y al diagrama de bloques para enviar mas caracteres y funciona perfectamente.

Mi interrrogante es, porque se programa en arduino la velocidad de transmision de data ----> Serial.begin(9600); y en el diagrama de bloques de arduino - labView requiere 115200.

Aclaro que el diagrama que enviaste tambien lo configure a 9600.

No he respondido muy rapido porque tube que comprar otros modulos de RF para probar la data, los anteriores sufrieron un accidente. 

 

0 kudos
Mensaje 48 de 112
7.410 Vistas

Hola, la idea de los foros es compartir experiencias y conocimientos. El proyecto o aplicación que realizaste, haz un documento en forma de tutorial, donde cualquiera que lo lea lo pueda entender y reproducir, paso a paso.

 

Sube y publica el documento en formato PDF. En el documento incluir programas, imágenes, gráficas, resultados obtenidos, explicación y observaciones, además de problemas y errores presentados con la solución.

 

 

 

 

0 kudos
Mensaje 49 de 112
7.405 Vistas

Hola,

 

       Mecatrónico aunque tanto para LabVIEW como para Arduino la comunicación parece ser serial, realmente en el intermedio el Arduino tiene un chip FTDI FT232R (puede ser otro chip deperdiendo de la version de la placa Arduino) que convierne la salida del UART del Arduino a USB. Es posible que ese chip es lo que te permitio configurar diferentes velocidades, aclaranos tu si te funciono para cualquier combinacion de velocidades o solo para esa que mencionas. Lo normal seria que tanto en LabVIEW como en Arduino coloques la misma velocidad.

 

        Me alegra mucho que hayas logrado hacer lo que querias.

 

Saludos Cordiales,

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
0 kudos
Mensaje 50 de 112
7.398 Vistas