desktop

Enviar y recibir datos seriales de un arduino uno a otro

Hola amigos del Foro..
G
usto de saludarles una vez más...

S
olicito me puedan ayudar con este tema.

Mi problema es que tengo dos arduino uno, en que uno de ellos transmite vía serial cableado Rx Tx datos numéricos, los que el segundo arduino uno los recibe y mediante el Monitor Serial, de cada uno logro ver que si existe dicha comunicación...
El problema es que al parecer no llega sincronizada la información.....
P
or favor, si me pueden ayudar...
D
ejaré el código de transmisor y del receptor...
M
uchas gracias...

Arduino, Transmisor:
C++:
int a;

int b;

int c;

int d;

int e;

int f;


void setup()

{

   Serial.begin(9600);

   a=1111;

   b=2222;

   c=3333;

   d=4444;

   e=255;

   f=255;

}


void loop()

{

    Serial.print(a);

    Serial.print(",");

    Serial.print(b);

    Serial.print(",");   

    Serial.print(c);

    Serial.print(",");

    Serial.print(d);

    Serial.print(",");

    Serial.print(e);

    Serial.print(",");   

    Serial.print(f);

    Serial.print(",");

    Serial.println("    ");

    delay(2000);

}
Arduino, Receptor:
C++:
int a,b,c,d,e,f;


void setup()

   {

      Serial.begin(9600);

   }


void loop()

   {

       if(Serial.available()>0)

         {

           a=Serial.parseInt();

           b=Serial.parseInt();

           c=Serial.parseInt();

           d=Serial.parseInt();

           e=Serial.parseInt();

           f=Serial.parseInt();

           Serial.print(a);

           Serial.print(",");

           Serial.print(b);

           Serial.print(",");

           Serial.print(c);

           Serial.print(",");

           Serial.print(d);

           Serial.print(",");

           Serial.print(e);

           Serial.print(",");

           Serial.print(f);

           Serial.println("    ");         

        }

    }

En el transmisor el monitor serie envía lo siguiente:


Transmision serial.jpeg

Y al Arduino receptor llega así:

Recepcion Serial.jpeg

Por favor, su ayuda..... Estaré atento.... Mil gracias.
 
Y...está mal!!!
Estás poniendo una coma entre datos en el envío y en la recepción crees que el método parseInt te va a separar los enteros de los comas y los va a transformar. Si bien lo puede hacer (al menos eso se deduce de la documentación) el valor que devuelve es long y no int.
Te recomiendo que leas como trabaja ese método, que es lo que hace y como devuelve los valores.
 
Gracias por responder, Dr. Zoidberg.....
Una consulta... ¿En el transmisor los datos deben salir así como está creado el código??...
¿E
so está bien??
 
Estás mezclando peras con manzanas con ese código.
parseInt() returns the first valid (long) integer number from the serial buffer.
Characters that are not integers (or the minus sign) are skipped.

parseint() regresa el primer número entero (largo) válido del búfer serial.
Los caracteres (como la ",") que no son enteros serán saltados.
 
Hola amigos, necesito de se ayuda.
Tengo dos arduino uno y desde el primero de ellos deseo enviar un dato via SERIAL, para controlar el tiempo de encendido de un led en el otro arduino. es decir, este tiempo debe ser desde 0 a 20 segundos. y el arduino que transmite el dato de tiempo ya esta predeterminado en el codigo. Entonces solo quiero enviarlo y que asuma ese valor el delay.

arduino 1 (RECIBE) arduino 2 (ENVIA)

digital.Write(LED, HIGH); desde este arduino debo enviar el valor de (tiempo), via serial
delay(tiempo);

si alguien me puede orientar, debido a mi desconocimiento en el tratamiento de envio de datos.
gracias.
 
Mira los ejemplos de código de la propia plataforma
No lo hagas todo de golpe, usa el terminal para enviar cosas desde el pc al receptor. Cuando funcione pruebas el otro lado.
 
Hola, amigos... He probado muchos códigos y formas encontradas en la web...
En
este ultimo veo que recibe la transmisión de datos desde el primer arduino y muestra en el monitor serie la recepción del mismo y posterior conversión de los datos, pero creo que aún no es real dicha conversión en donde deben ser convertidos a números enteros dichas variables..,
E
staré atento a sus comentarios. Adjunto el código, gracias.
Código:
#include <Separador.h>

Separador s;

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

void loop()
    {
     if(Serial.available())
      {  
        serialEvent();
      }
    }

void serialEvent()
     {
      String datosrecibidos = Serial.readString();
      String elemento1 = s.separa(datosrecibidos, ',', 0);
      String elemento2 = s.separa(datosrecibidos, ',', 1);
      String elemento3 = s.separa(datosrecibidos, ',', 2);    
      String elemento4 = s.separa(datosrecibidos, ',', 3);
      String elemento5 = s.separa(datosrecibidos, ',', 4);
      String elemento6 = s.separa(datosrecibidos, ',', 5);

      int a = elemento1.toInt();
      int b = elemento2.toInt();
      int c = elemento3.toInt();
      int d = elemento4.toInt();
      int e = elemento5.toInt();
      int f = elemento6.toInt();    

      Serial.println(a);
      Serial.println(b);
      Serial.println(c);
      Serial.println(d);
      Serial.println(e);
      Serial.println(f);
      Serial.println();
      Serial.println();
 
Atrás
Arriba