COMUNICACIÓN SERIAL LABVIEW_ARDUINO SIN TOOLKIT

Buenas noches,
Saludos Cordiales Comunidad,

Ante todo permitanme decirle que apenas estoy iniciándome en este mundo de arduino.

He estado leyendo unos foros de arduino con respecto a como leer y procesar los datos enviados a arduino por el puerto serial y no he dado con uno donde se me haga digerible la información aportada.

Estoy realizando un proyecto en la universidad para la comunicación entre Labview y arduino, en el que parte del proyecto presenta un sistema de luminosidad dividido en dos partes (la idea es activar la luminosidad de forma gradual o on/off):

1.)- Regular la intensidad de luminosidad de cuatro (4) zonas datos pwm.
2.)- Activar la luminosidad en o% ò 100% (ON / OFF).

He podido realizar la lectura y procesamiento tanto de un dato binario como la de un dato PWM (con la ayuda de tutoriales vistos en YOUTUBE), sin embargo no he podido canalizar la información de dos zonas, es decir no he podido canalizar el dato proporcionado por la activación de dos zonas o mas desde Labview (dato enviado al puerto serial).

La pregunta es ¿como puedo hacer la lectura de un GRUPO de datos enviados al puerto serial desde Labview, que me identifique la zona o zonas que se están activando?

Desde Labview he enviado un array que contiene todos los datos pero no se como desconponer en arduino ese array para que me identifique cada dato enviado (cada zona).

Nota: no se me esta permitido trabajar bajo el entorno de la libreria LIFA (toolkit).

esperando que me puedan orientar al respecto,

Reinaldo.

byte cuarto1; // almacena el dato serie
int bombilla1=6;
byte cuarto2; // almacena el dato serie
int bombilla2=3;// almacena el dato serie
char dato3; // almacena el dato serie
char dato4; // almacena el dato serie

void setup()
{
Serial.begin(9600);
 // abre el puerto serie, y le asigna la velocidad de 9600 bps
pinMode (bombilla1, OUTPUT);
pinMode (bombilla2, OUTPUT);
}

void loop()
{
  Serial.available();
  char dato[2]={Serial.available()};
  Serial.print(dato);
  if (Serial.available()){
  dato3=Serial.read();
  
    if (dato3 == 'A')
    {
    digitalWrite (bombilla1, HIGH);
    }
else{
    if (dato3 == 'B')
     {
    digitalWrite (bombilla1, LOW);
     }
}}

if (Serial.available()){
  dato4=Serial.read();
  
    if (dato4 == 'C')
    {
    digitalWrite (bombilla1, HIGH);
    }
else{
    if (dato4 == 'D')
     {
    digitalWrite (bombilla2, LOW);
     }
}}

}

Segundo código

byte cuarto1; // almacena el dato serie
int bombilla1=6;
byte cuarto2; // almacena el dato serie
int bombilla2=3;// almacena el dato serie
String dato1; // almacena el dato serie
String dato2; // almacena el dato serie

void setup()
{
Serial.begin(19200);
 // abre el puerto serie, y le asigna la velocidad de 9600 bps
pinMode (bombilla1, OUTPUT);
pinMode (bombilla2, OUTPUT);
}

void loop()
{
 Serial.available(); 
// envía datos sólo si los recibe:
if (Serial.available())
{
dato1=Serial.read();
if (dato1 == '@')
{
// lee el byte de entrada:
cuarto1 = Serial.read();
analogWrite (bombilla1, cuarto1); 
}
}

if (Serial.available())
{
  dato2=Serial.read();
if (dato2 == '&')
{
// lee el byte de entrada:
cuarto2 = Serial.read();
analogWrite (bombilla2, cuarto2); 
}
}

}

ESCRITURA_DIGITAL_LABVIEW_ARDUINO.ino.ino (879 Bytes)

ESCRITURA_PWM_LABVIEW_ARDUINO.ino (776 Bytes)

LIFA has been deprecated for LINX.

If you want to use the serial port to communicate to the Arduino Uno, you will need a USB-TTL adapter and use AltSoftSerial library https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html as the Arduino Uno has only one set of hardware serial pins and my preference is to keep those pins just for downloading sketches and debugging.

hola ieee488

por lo que puede leer de su aporte es que me recomienda usar un hardware con su respectiva librería. Voy a estudiar el punto, aunque no es lo que busco en si. Más bien trato de hallar una idea en cuanto a la programación en si, es decir como leer e interpretar desde arduino un grupo de datos (array) enviados desde Labview (puerto serial).

gracias por tu colaboración.

Bueno eso es fácil. Con Labview envia datos serie, y coloca a Arduino solo como reproductor de lo que envie Labview. Cuando logres entender lo que esta enviando ya lo tienes resuelto.

Crea en Labview el envio de tu array, establece la comunicación serial sin LINX, LIFA y todo lo demás, solo un puerto serie que esta disponible como VI. Luego un simple código que recepciona datos en Arduino. Si usas un UNO necesitas un puerto virtual porque solo tiene un puerto serie y si lo usas para monitorear no verás nada. Asi que lee SoftwareSerial que esta disponible en los IDE actuales. AltSoftSerial no es relevante porque no te dará nada que SoftwareSerial no te de.