Comunicacion Serial entre Arduino Mega y Arduino YUN

Hola amigos, soy nuevo en foro, mi consulta es la siguiente: estoy realizando un proyecto en el cual se requiere comunicar dos arduinos (mega y YUN) por medio se comunicacion serie (Rx y Tx). He realizado algunas pruebas pero no he logrado enviar caracteres o cadena de caracteres de un arduino a otro. En mi caso quiero enviar una cadena del Arduino Mega al YUN. He intentado con todos los puertos serie del Mega pero no me funciona. Alguien podría explicarme como le puedo hacer? Les dejo mi codigo del trnsmisor (Mega) y del receptor (YUN).

En el circuito tengo conectado el Rx del YUN al Tx del Mega y viceversa.

Codigo del Transmisor:

// Programa del Arduino MEGA (transmisor)

const int boton2 = 2;      // pin 2 conectado al pulsador (conectado a masa y una resistencia+5v)
const int led9 =  9;       // pin 9 conectado a un led + resistencia +GND

// variable que cambiara:
int estadoBoton = 0;       // variable para ver el estado del boton 

void setup() 
{
  Serial1.begin(9600);      // Inicia la velocidad de transmision para Tx y Rx
  pinMode(led9, OUTPUT);   // pin 9 (led) modo SALIDA 
  pinMode(boton2, INPUT);  // pin 2 (boton) modo ENTRADA   
}

void loop()
{
  // lee si el pulsador esta suelto 0 o pulsado 1
  estadoBoton = digitalRead(boton2);

  if (estadoBoton == HIGH) 
  {                              // si el boton ha sido pulsado:    
    digitalWrite(led9, HIGH);    // encendemos el led 
    Serial1.write("on");           // Enviamos 'on' por Tx (puerto serie)
    delay(500);                  // Retardo de 0,5 s
  } 
  else 
  {                              // si el boton no ha sido pulsado
    digitalWrite(led9, LOW);     // apagamos el led
    Serial1.write("off");           // Enviamos 'off' por Tx
    delay(500);                  // Retardo de 0,5s
  }
}

Codigo del Receptor:

// Programa del Arduino YUN (receptor)

#define pin9 9
char dato;
String readString;
void setup() 
{
  Serial.begin(9600);         // Inicio el puerto serie a 9600 baudios
  pinMode(pin9, OUTPUT);      // pin 9 (led) modo SALIDA
  }

void loop() 
{
  leer_dato();

if(readString.length() > 0){
    if (readString == "off")           // Si es 'off'
    {
      digitalWrite(pin9, LOW);         // Apago el led 9 (nivel BAJO)
    }
    if (readString == "on")           // Si es 'on'
    {
      digitalWrite(pin9, HIGH);        // Enciendo el led 9 (nivel ALTO)
    }
    readString = "";
  }
  Serial.write("Hola");
}
void leer_dato(){
  while(Serial.available()){
    delay(10);
    if(Serial.available() > 0){
      dato = Serial.read();
      readString+= dato; 
    }
  }
 }

Bueno amigos, espero su ayuda, Gracias. :slight_smile:

porque usas ese delay(10) en la rutina del YUN? probaste no usarlo?
Supongo que no será gran cosa pero prueba a ver.

¿Estan conectados correctamente? Tx-Rx y Rx-Tx

Mira esto, supongo que has hecho pruebas simples con el monitor serie no?

Arduino YUN: Serial Communication not working

AHora esta guia de YUN me parece que merece leerse

Gracias por sus comentarios amigos!!, ya he probado enviando caracteres por el monitor serial al YUN y si funciona, tambien probé el MEGA con el monitor serial y si imprime caracteres, pero cuando los conecto entre ellos no pasa nada, el problema es que el MEGA no le envia datos por el serial al YUN.

Tengo conectados el Tx-Rx y Rx-Tx.

:confused:

Saludos.

Si en el codigo del yun veo que usas Serial.begin es que estas usando los pines 0 y 1 el yun utiliza esos pines para cominicarse con el AR9331 a traves de las funciones Bridge.XX

intenta usar software serial con otra pareja de pines

Una obviedad, pero aparte de los pines RX/TX hay que conectar GND entre sí en las dos placas. Están conectados esos pines?

GO_zalo:
Si en el codigo del yun veo que usas Serial.begin es que estas usando los pines 0 y 1 el yun utiliza esos pines para cominicarse con el AR9331 a traves de las funciones Bridge.XX

intenta usar software serial con otra pareja de pines

Gracias!! Me sirvio bastante, creo que los pines del Tx y Rx del yun no los puedo usar para comunicarme con el mega, he utilizado softwareSerial y me funciono. No lo habia tomado en consideracion ya que no usaba las funciones del bridge, pero creo que eso no afecta.

En cuanto al GND que debe ir conectado entre ambos les comento que si lo tenia y ni asi me funcionaba, de hecho, estoy alimentando al yun con 5 Vdc y GND desde el Mega.

Saludos y gracias, muchas gracias por sus aportes!!

Si lo has solucionado ,porfavor edita el titulo del post y añade SOLUCIONADO.