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. ![]()