comunicazione tra 2 arduini

Salve ragazzi... in questi giorni ho riscontrato un problemino nella comunicazione fra i miei 2 Arduini-UNO. Il problema consiste nel fatto che mandando i dati utilizzando una (8110-RTX-MID5V) non so se i dati non arrivino proprio oppure non vengono trasmessi. Secondo me mi sono dimenticato qualche stringa di codice oppure ne ho scritta qualcuna di sbagliata. Considerando che l'Arduino collegato al PC mi serve solo per leggere i dati mandati da Processi ed inviarli all'altro Arduino tramite il modulo Aurel, i codici che ho scritto sono i seguenti:

Arduino collegato al PC:

int TX = 1;
int enable = 4;
int datain = 6;

void setup(){
     pinMode(TX, OUTPUT);
     pinMode(enable, OUTPUT);
     pinMode(datain, OUTPUT);
     Serial.begin(9600);
}

void loop(){
     Serial.read();
     digitalWrite(TX, HIGH);
     digitalWrite(enable, HIGH);
     digitalWrite(datain, HIGH);

}

Arduino lontano:

int sinistra = 2;                                  //Pin 2  = sinistra
int avanti = 3;                                    //Pin 3  = avanti
int indietro = 4;                                  //Pin 4  = indietro
int destra = 5;                                    //Pin 5  = destra
int enable = 10;                                   //Pin 10 = enable
int RX = 0;
char val = 0;                                      //variabile 'val' a 0

void setup(){                                      //Inizzializzazione modalità dei Pin di Arduino
     pinMode(avanti, OUTPUT);                      //Pin 3 modalità OUTPUT
     pinMode(indietro, OUTPUT);                    //Pin 4 modalità OUTPUT
     pinMode(destra, OUTPUT);                      //Pin 5 modalità OUTPUT
     pinMode(sinistra, OUTPUT);                    //Pin 2 modalità OUTPUT
     pinMode(RX, INPUT);                          //Pin 12 modalità OUTPUT
     Serial.begin(9600);
}

void loop(){                                       //Funzionamento del programma
     digitalWrite(enable, HIGH);                   //Pin 10 sempre alto, enable attivo  
     digitalRead(RX);
     val=Serial.read();                            //Variabile 'val' = lettura della seriale proveniente da processing
     switch (val) {                                //Start dello switch della variabile
             case 'a':                             //Se viene letto 'a':
                 digitalWrite(sinistra, HIGH);     //Pin 2 ALTO, (escono 5V)
                 break;
             case 'w':                             //Se viene letto 'w':
                 digitalWrite(avanti, HIGH);       //Pin 3 ALTO, (escono 5V)
                 break;
             case 's':                             //Se viene letto 's':
                 digitalWrite(indietro, HIGH);     //Pin 4 ALTO, (escono 5V)
                 break;
             case 'd':                             //Se viene letto 'd':
                 digitalWrite(destra, HIGH);       //Pin 5 ALTO, (escono 5V)
                 break;
             case 'x':                             //Se viene letto 'x':
                 digitalWrite(sinistra, LOW);      //Pin 2 BASSO, (escono 0V)
                 break;
             case 'y':                             //Se viene letto 'y':
                 digitalWrite(avanti, LOW);        //Pin 3 BASSO, (escono 0V)
                 break;
             case 'z':                             //Se viene letto 'z':
                 digitalWrite(indietro, LOW);      //Pin 4 BASSO, (escono 0V)
                 break;
             case 'q':                             //Se viene letto 'q':
                 digitalWrite(destra, LOW);        //Pin 5 BASSO, (escono 0V)
                 break;    

}





}

Qualcuno ha qualche idea su cosa stia sbagliando?

È sbagliato tutta la gestione della seriale. con digitalWrite(TX, HIGH); mandi niente sulla seriale e con digitalRead(RX); non leggi niente.

Vedi http://arduino.cc/en/Serial/Read http://arduino.cc/en/Serial/Write http://arduino.cc/en/Serial/Print

Ciao Uwe

come posso fare? non ho capito molto bene....

Allego anche il codice di Processing:

import processing.serial.*;
Serial myPort;                                          //Nome della seriale


void setup() {
println(Serial.list());
myPort = new Serial(this,Serial.list()[0],9600);        //Inizializzazione della seriale
}

void draw(){
   if(keyPressed){                                      //Funzione per la lettura della pressione di una lettera sulla tastiera
       if(key=='a'){                                    //Se 'a' premuta la seriale scrive 'a'
          myPort.write('a');
         }
       if(key=='w'){                                    //Se 'w' premuta la seriale scrive 'w'
          myPort.write('w');
         }
       if(key=='d'){                                    //Se 'd' premuta la seriale scrive 'd'
          myPort.write('d');
         }
       if(key=='s'){                                    //Se 's' premuta la seriale scrive 's'
          myPort.write('s');
         }
     }
}

void keyReleased(){                                     //Funzione per la lettura della pressione di una lettera sulla tastiera
   if(key=='a'){                                        //Se 'a' rilasciata la seriale scrive 'x'
      myPort.write('x');
     }
   if(key=='w'){                                        //Se 'w' rilasciata la seriale scrive 'y'
      myPort.write('y');
    }
   if(key=='s'){                                        //Se 's' rilasciata la seriale scrive 'z'
      myPort.write('z');
     }
   if(key=='d'){                                        //Se 'd' rilasciata la seriale scrive 'q'
      myPort.write('q');
     }
}

Io ho collegato :

Per la TX i piedini 4-5-6 della RTX ai piedini 6-4-1 dell'Arduino attaccato al PC

Per la RX i piedini 5-6 della RTX ai piedini 4-0 dell'Arduino lontano.

Grazie VoLa

Tu hai Processing sul PC che comunica con un Arduino via seriale che, a sua volta, comunica con un altro Arduino. Siccome l'Arduino ha solo 1 seriale, il secondo canale verso l'altro Arduino devi crearlo in software usando la SoftwareSerial. Questa libreria ti creerà un canale seriale software che userai come una seriale vera e propria. Quindi nello sketch del primo Arduino avrai: seriale hardware verso il PC seriale software verso il secondo Arduino

Sul secondo Arduino avrai solo la seriale hardware agganciata però sulla seriale software del primo Arduino.

Sul primo Arduino alla libreria SoftwareSerial dovrai fornire 2 pin che saranno i tuoi pin RX/TX e che poi dovrai collegare ai pin RX/TX del secondo Arduino.

grazie leo,

sono riuscito a farli comunicare però solo senza i due moduli RTX attaccati, adesso ho provato ad aggiungerli ma purtroppo non funzionano....

Qualche idea?

VoLa: senza i due moduli RTX attaccati

quali moduli? puoi mettere il link?

Eccoli:

http://www.aurelwireless.com/wp-content/uploads/manuale-uso/650201033G_mu.pdf