Buenos días.
Tengo un proyecto cargado y funcionando en Arduino Mega, y tengo todas las entradas y salidas PWM ocupadas (en total me quedan 8 pines digitales libres de 53). Por lo tanto, no puedo añadirle una tarjeta ethernet. Se me ocurre conectar la tarjeta ethernet a un Arduino UNO y comunicar ambas tarjetas por los puertos Serial de Arduino UNO y Serial2 de Arduino Mega.
El problema es que cuando pruebo las comunicaciones entre Arduinos funcionan bien siempre que no estén haciendo otra cosa. En cuanto cargo todo el código en Arduino Mega y escribo en el loop la parte correspondiente a la lectura del puerto Serial2 pasan dos cosas: Read fail o recibe un valor que no tiene nada que ver con lo que yo estoy enviando.
¿Cómo puedo "sincronizarlos" para que uno escriba cuando el otro lee o al revés? Teniendo en cuenta también que Arduino UNO ahora sólo está escribiendo mensajes a Arduino MEGA, pero tiene que hacer muchas más cosas más adelante.
Gracias. Un saludo.
Códigos de envío y recepción
Para recepción:
// Comprueba si tiene un mensaje
if(Serial2.available()){
memset(cadena, 0, sizeof(cadena));
while (Serial2.available()){
delay(5);
cadena[contador]=Serial2.read();
contador++;
}
contador=0;
valor=atoi(cadena);
Serial.println(valor);
}
Para envío hago simplemente un Serial.print(Mensaje);