Duda con Labview y Arduino

Hola a tod@s, antes de nada me gustaría agradecer a todo el mundo la participación en este foro. Desde luego es genial poder compartir información tan útil con todo el mundo.

Mi duda es la siguiente. Estoy intentando comunicar Arduino con Labview vía USB. Antes de nada, decir que uso Mac OSX. El caso es que el código/bloques en Labview compilan, y puedo ejecutarlo, pero el programa no comunica. No sé como configurar Labview VISA para que comunique con Arduino. El código de Arduino está bien, es sólo que algo está fallando en Labview y no sé que es. El diagrama de bloques de Labview lo he sacado de la siguiente página. http://web.me.com/iklln6/automation/LabVIEW.html

Espero que alguien me pueda ayudar. Si alguien pudiera resolverme algo, por favor, que se ponga en contacto conmigo a través de cscoira@gmail.com. Podría ser interesante incluso trabajar en línea.

Gracias de antemano.

Hola buenas noches lastimas que no te puedo ayudar porque no he trabajado con labview pero quiero empezar asi que de momento buscare informacion y lo mejor ver como instalo labview ya que no lo tengo y luego hacer pruebas de todo tipo he participado en varias ponencias que han dictado en mi pais sobre labview.

Saludos y si puedes suministrar una version de labview con la cual pueda empezar te lo agradesco.
Atten.
Alexander Santana.
Venezuela-Barcelona.

Hola

Si pones una captura de pantalla del código le podemos echar una ojeada.

Por cierto, ArduLab http://www.ardulab.es está hecho en LabView y si miras en el apartado de "Media" puedes ver que incluso parte del proyecto se desarrolló con Mac.

Aquí dejo una captura de lo que tengo en Labview.

No tengo ni idea de que puede estar fallando, y tampoco tengo claro cuáles son los parámetros que debo rellenar y con qué valores.

El código que meto de prueba en Arduino es el siguiente:

void setup(){
  Serial.begin(9600);
  digitalWrite(13, HIGH);
  analogReference(DEFAULT);
}

void loop(){
  int analogValue = analogRead(2);
  Serial.println(analogValue);
  delay(100);
}

Agradezco mucho vuestras respuestas. Enseguida me meto a echarle un ojo al Ardulab, a ver qué encuentro para mac.

Gracias otra vez!

Vuelvo a subir la captura con un mejor tamaño.

Veamos, por un lado tiene us programa en la placa Arduino que manda, cada 100ms, un valor en forma de cadena de caracteres, esto es, que si el valr es 234, manda 4 bytes: el AsCII del 2, el ASCII del 3, el ASCII del 4 y el delimitador de finale de línea (ahora no recuerdo si manda un CR o un CR + LF. El problema de mandar datos de esta forma es que si el valor es muy bajo (9 por ejemplo) manda menos caracteres que si es 1017. Es decir que no manda siempre el mismo número de caracteres.

Veo que en el código de LabVIEW "Numeric 4" lo usas para controlar el número de caracteres que lees cada vez. mala cosa ya que como hemos comentado esto varía con el valor.

Hay varias soluciones a este problema. La más eficaz (por rápida) es que si quieres mandar un int (que son 16 bits) mandes los dos bytes en binario usando el modificador BYTE con la función print().

Hay más cuestiones, con lo que mandas no se puede saber si has configurado bien el puerto serie en LabVIEW, para ello solo tienes que poner la velocidad (9600, ya que es esa la que pones en el probrama en LabVIEW), el número de bits (8) y la paridad (N).

También hay otro error de concepto, mientras que el programa que haces en Arduino manda datos de forma continuada, el programa que tienes en LabVIEW solo lee datos una vez por ejecución.

Creo que ya lo voy cogiendo... Voy a rehacer todo. En cuanto lo tenga dejo un post con la solución final :smiley:

Muchas gracias por todo!

¿Influye que en setup() falta poner pinMode(13,OUTPUT)? Pregunto porque como no tengo ni idea de LabView, no vaya a ser que meta la pata... :-/