NewSoftSerial con 2 arduino

Ciao a tutti, da un mese sto cercando di far comunicare due schede arduino Duemilanove.
Ho trovato in rete la libreria newsoftserial e ho provato questo programma.

#include <NewSoftSerial.h>

NewSoftSerial mySerial(2, 3);

void setup()
{
Serial.begin(57600);
Serial.println(“Goodnight moon!”);

// set the data rate for the NewSoftSerial port
mySerial.begin(4800);
mySerial.println(“Hello, world?”);
}

void loop() // run over and over again
{

if (mySerial.available()) {
Serial.print((char)mySerial.read());
}
if (Serial.available()) {
mySerial.print((char)Serial.read());
}
}

Il programma funziona, ma solo nella configurazione seguente ovvero con un solo invio.
Se provo a mettere l’invio nel loop il secondo arduino riesce ad ricevere correttamente quattro stringe e poi riceve caratteri senza senso.
Ho provato ad usare la funzione flush ma non funziona.

Come posso risolvere?

Ciao, non è che per caso è solo un problema di baud rate? Hai settato giusto quello del monitor seriale?

Edit: Ma poi perché hai bisogno della libreria, non basta collegare i due arduino via pin digitale 0 e 1? Dovrebbero comunicare tranquillamente senza bisogno di librerie. Questa libreria serve solo per abilitare la comunicazione seriale anche attraverso altri pin, però se devi solo farli comunicare tra loro bastano i pin RX e TX.

Ho settato il monitor a 57600b Giusto?

Non ho mai usato la libreria Softserial ne la Newsoftserial, comunque se non è 57600 sarà 4800. Ma come li hai collegati i due arduino?

Ho collegato la porta digitale 2 del primo alla 3 del secondo e viceversa.

Il casino è che scrive a due velocità diverse, sulla porta seriale "hardware" che nel tuo caso immagino sia la usb collegata al pc scrive a 57600 sulla seriale "software" scrive a 4800 e quindi il monitor seriale va in pappa. Sono solo ipotesi perché non conosco la libreria, però potrebbe essere. Prova a collegarli con i pin 0 e 1 al posto che 2 e 3 e togli la libreria, poi carica su un arduino un programma che invia stringhe o numeri o quello che ti pare e sull'altro salvi il Serial.read e lo stampi con Serial.print, dovrebbe funzionare

Edit: in realtà non so quale sia il problema, non ho la possibilità di provare ora, però questa configurazione dovrebbe funzionare

Mark116: Ho collegato la porta digitale 2 del primo alla 3 del secondo e viceversa.

Sara' anche una cosa scontata ... ma ci hai messo anche il GND ... vero ? :D

brunol949:

Mark116: Ho collegato la porta digitale 2 del primo alla 3 del secondo e viceversa.

Sara' anche una cosa scontata ... ma ci hai messo anche il GND ... vero ? :D

Giusto, se non sono tutti e due collegati via usb devi anche collegare tra loro i GND dei due arduino. Se sono tutti e due collegati via usb fa di sicuro casino con le velocità

Per favore spiega correttamente cosa stai facendo, come hai collegato gli Arduino, a cosa sono collegati gli Arduino ecc...

1 mese? caspita è tantissimo tempo... Se vuoi un risultato comodo ti consiglio http://www.billporter.info/easytransfer-arduino-library/ nello specifico softeasytransfer. I miei due arduino comunicano tra loro e con questa libreria ho impiegato solo qualche ora a metter su la comunicazione :)