Comunicazione tra 2 Arduino client>server & server>client

Ciao a tutti,
ho 2 Arduino connessi nella rete domestica.
Arduino 1 client = legge dei sensori e manda i valori letti al Arduino 2 server
Arduino 2 server = alternativamente, legge i sensori Arduino 1 client e gestisce il webserver su cui stampa i valori e da cui riceve dei comandi.

Nessun problema se la comunicazione tra i 2 Arduino é unidirezionale ovvero A1 client > A2 server ma a me servirebbe bidirezionale in modo che anche A2 server possa inviare informazioni a A1 client
Ho fatto diversi tentativi ma tutti senza successo.

Come deve essere strutturato il flusso dati affinché possa essere bidirezionale?

Qui l'estratto del codice del client

      if (client.connect(server, 23)){ //  Verifica conn. Client-To-Server
        Serial.println("Connesso ON"); //  Stampa su COM Connesso ON
        client.write('A');             //  Inizio stringa
        client.print (a);           //primo valore
        client.write('B');
        client.print (b);
        client.write('C');
        client.print (c);
        client.write('D');
        client.print (d);
        client.write('E');
        client.print (e);
        client.write('F');
        client.print (f);
        client.print ('Z');  //fine stringa
        client.print ('\0');
        client.flush();
        client.stop();                 //  Chiudi connessione
          }
           else{
        Serial.println("Connessione ON fallita");                         
        client.stop();                 //  Chiudi connessione
           }
.............................................................

E questo é il codice che uso per ricevere i dati

  EthernetServer server(23);                     //  apre server porta 23  
 
 client = server.available();
  Serial.println ("Server available  ");
  
         if (client){  //se si è connesso qualcuno
            Serial.println ("Client connected  ");
      
      while ( client.connected() ) {    //  da fare quando client connesso                                                                           
             //aspetta senza far nulla che il client si disconnetta o invii almeno 1 lettera
            char post = client.read();   
            if(bufferSize < bufferMax)  
             buffer[bufferSize++] = post;  // salva nel buffer ed incrementa la dimensione 
            delay (1);          
            }
              
           Serial.print ("Buffer ricevuto  : ");  Serial.println(buffer);  // stampa buffer ricevuto
        
              for (int i=0 ; i<bufferSize; i++) {
              x = buffer[i] ; //estrae tutti caratteri dal buffer uno alla volta
             relay() ; //routine per decodificare ed interpretare i singoli caratteri del buffer 
             }

estrazione_valori_sensori(); //routine  di estrazione dei valori dal messaggio ricevuto
   
          }
   client.flush();      
  client.stop();  Serial.println ("Client stop  ");        
.......................................

Ovviamente il codice é artigianale e dopo essere stato scopiazzato é stato riadattato.
Comunque funziona bene.

P.S. uso 2 Arduino mega con W5100

Usa la macro F() nei print() per non riempire la RAM.
Ciao Uwe

Grazie del suggerimento. Avevo giusto letto oggi di questa macro e stavo cercando di capirci qualche cosa anche se comunque non ho problemi di memoria.......almeno per ora

Purtroppo peró non risolve il mio problema di comunicazione bidirezionale :slight_smile:

Bertu hai risolto il problema?