Connessione rs485 tra 2 arduino

Salve a tutti, devo far colloquiare due arduino tra loro posti a una distanza di 50 mt circa, poche necessita al momento il master deve inviare un comando lo slave lo deve eseguire.
Ho cercato in rete un po di info ma sono ad un punto morto.
Ho seguito le indicazioni che ho trovato qui:
https://arduino-info.wikispaces.com/SoftwareSerialRS485Example
ma ho dei risultati un po strani, nel serial monito mi compare un punto interrogativo in un riquadro nero al posto del carattere che ho inviato,
a prima vista sembra che i due arduino si parlino ma non capisco perché non si scambino correttamente il carattere.
Pensavo fosse un problema di velocità della seriale ed ho provato a diminuirla ma senza risultati
Premetto ho un "arduino uno" che teoricamente funge da master ed un "arduino mega 256" che funge da slave connessi tramite due convertitori ttl-rs485.
Se connetto i due arduino direttamente si scambiano i dati con i convertitori no.
Non riesco a capire se è un problema software o hardware

Faglieli stampare in esadecimale. Tanto da capire quello che invii e quello che ricevi.

ho voluto testare la seriale dei miei arduino con questo programmino (non mio trovato in rete)

int led = 13;

void setup() {
 // Setto il pin 13 come una uscita
  pinMode(led, OUTPUT);

  //Inizializzo la seriale
  Serial.begin(9600);
  
  //Effettuo il lampeggio del led accendendolo e spegnendolo 3 volte
  digitalWrite(led, HIGH); // accende il led
  delay(50);
  digitalWrite(led, LOW); // spegne il led
  delay(100);
  digitalWrite(led, HIGH); // accende il led
  delay(50);
  digitalWrite(led, LOW); // spegne il led
  delay(100);
  digitalWrite(led, HIGH); // accende il led
  delay(50);
  digitalWrite(led, LOW); // spegne il led
  delay(100);
}

void loop() {

      //Vedo se ci sono i dati sulla seriale
      if (Serial.available() > 0) 
      {
      // se ci sono i dati in ricezione sulla seriale li leggo
      int incomingByte = Serial.read();

      // rimbalzo il dato al pc sempre sulla seriale
      Serial.println("da arduino");
      Serial.println(incomingByte);
      }
       
}

dovrebbe essere una cosa semplice per vedere cosa arriva sulla seriale
il risutato è questo:

49
da arduino
10
da arduino
50
da arduino
10
da arduino
51
da arduino
10
da arduino
52
da arduino
10
da arduino
53
da arduino
10
da arduino
54
da arduino
10
da arduino
55
da arduino
10
da arduino
56
da arduino
10
da arduino
57
da arduino
10

sul serial monitor inviavo numeri da 1 a 9

Non capisco dove sia il problema, una nota che avevo omesso nel precedente post utilizzo un iMac con Sierra

**> Galmik: **ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (in basso a destra del post, bottone More → Modify) e racchiudere il codice all’interno dei tag CODE (… sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra).

Guglielmo

... e quelli stai leggendo infatti :smiley:

Dimentichi che il monitor seriale invia i caratteri secondi il codice ASCII e NON in binario quindi 0 = 0x30, 1 = 0x31 ... 9 = 0x39 :wink:

Inoltre, probabilmente, in basso a destra hai selezionato come fine riga il carattere LF che è 0x0A quindi, ogni volta che invi un CARATTERE, il monitor seriale ci appende il LF.

Guglielmo

Grazie, ho modificato il post, cosi dovrebbe andare bene,
chiaro anche il resto , pensavo che il serial monitor riportasse fedelmente quello che si inviava sulle seriale, come già detto sono molto a digiuno ed ho molto da imparare

Il serial monitor riporta assolutamente fedelmente… quel che ci scrivi! Prova:

Serial.println((char) incomingByte);

Grazie, credo di aver risolto, mi sa che era un problema legato alla velocità della seriale, pensavo fosse troppo veloce ma mi Sto arrivando! che era troppo lenta, una volta aumentata i due arduino hanno iniziato a scambiarsi dati correttamente anche se ogni tanto qualche carattere si perde