Acabo de probar esto. Mi experiencia ha sido la siguiente.
Por una parte, es muy cierto que la librería NewSoftwareSerial, no era compatible con Arduino Mega 2560, por lo que me he descargado la nueva versión beta de esta librería desde la página que indicasteis. El resultado ha sido inmediato, tan sólo unos apuntes, pero antes pego los códigos que he utilizado y funcionan perfectamente:
Emisor (Arduino Duemilanove)
#include <SoftwareSerial.h>
#define rxPin 2
#define txPin 3
SoftwareSerial mySerial(rxPin, txPin);
void setup() {
mySerial.begin(2400);
}
void loop(){
mySerial.print('h');
delay(500);
}
Receptor (Arduino Mega 2560)
#include <SoftwareSerial.h>
#define rxPin 10
#define txPin 11
SoftwareSerial mySerial(rxPin, txPin);
void setup() {
mySerial.begin(2400);
Serial.begin(4800);
}
void loop() {
if (mySerial.available()) {
Serial.print((char)mySerial.read());
}
}
Lo primero a tener en cuenta es que la nueva librería NewSoftwareSerial (versión beta aún), pasa a llamarse de nuevo SoftwareSerial (ojo al incluir la cabezera).
Lo segundo es que esta librería no soporta todos los pines de la Arduino Mega, tal y como explica en la página. (
"Note: Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69")
Y otra cosa que me ha chocado es que la velocidad del puerto serie estándar (el USB) no puede ser mayor o igual a 9600 baudios, ya que en este caso, por lo menos a mi, me imprime "basura" por pantalla en lugar de imprimir el carácter deseado. En este caso he puesto que la velocidad del puerto serie estándar sea de 4800 baudios, pero podría haber valido también una velocidad menor.
Seguiré probando nuevas formas de transmisión de datos por puertos serie. Muchas gracias por vuestra ayuda, la verdad es que así da gusto.