Communication série entre arduino due et arduino uno problème

Bonjour,je n'arrive pas à communiquer correctement avec le due même avec un pont diviseur de tension.

DUE

if(Serial3.available()){
  timeSerial=Serial3.readString();
Serial.println(timeSerial);
}
}

UNO

void loop() {
delay(500);
Serial.println(Clock());

}

Je ne l'ai pas marquer dans le code mais j'utilise le port série 1 pour le moniteur et le port 3 du due pour communiquer avec l'uno.
Je reçois les données quand j'enlevé le fils TX de l'uno aussi non c'est comme si le moniteur série était bloqué figé !

Avec le code en entier ce serait mieux pour debugger. Quel est le câblage entre les 2 arduinos ?

UNO TX vers DUE Rx AVEC pont diviseur de tension
UNO RX vers DUE TX

Le sketch suivant envoie et reçoit sur Serial3 (connecter RX3 sur TX3) et affiche ce qui se passe sur le moniteur série (donc connecté via Serial, Arduino DUE Programming Port). Si ce sketch fonctionne correctement (ce qui est le cas si la carte DUE n'est pas HS), tu passes au test 2.

char c = 0;
void setup() {
 
  Serial.begin(115200);
  Serial3.begin(115200);

  Serial3.print("Hello");
}


void loop() {
  String s;
  s = "";

  while (Serial3.available() > 0) {
    c = Serial3.read();
    s += c;

  }
  if (s.length() > 0) {
    Serial.println(s);
    Serial3.print(s);
  }
  delay(1000);
}

Test 2 : Tu connectes RX3 sur TX du UNO et TX3 sur RX du UNO via un décaleur de niveaux logiques bidirectionnel pour passer respectivement de 0V-3.3V à 0V-5V (les GND sont connectés ensemble).
Tu charges le sketch suivant sur le UNO, et ça devrait fonctionner:

char c = 0;
void setup() {
 
  Serial.begin(115200); 
}

void loop() {
  String s;
  s = "";

  while (Serial.available() > 0) {
    c = Serial.read();
    s += c;
  }
  if (s.length() > 0) {
   
    Serial.print(s);
  } 
}

A noter que le type String n'est pas recommandé sur le UNO, mais c'est uniquement pour le test.

Merci mais toujours le même problème

Toujour la même méthode : séparer les variables.

Variable matériel.
Si la liaison n'est pas correcte du point de vue électronique les signaux RX qui arrivent sur les cartes seront déformés et inutilisables.
Si le pont de résistance est constitué avec des longueur de fil de plusieurs centimètres sur breadboard par exemple ce sera un cas aggravant.

La déformation dépendra aussi du contenu du message (1,0 qui se suivent --> fréquence instantanée élevée ou plusieurs 1 (ou 0) consécutifs --> fréquence instantanée plus faible).
D'où possibilité d'un fonctionnement qui semble aléatoire mais qui en réalité est parfaitement déterministe.
Plus la vitesse de communication augmente plus les signaux se déforment.

Je vois que tu es en débit quasi maximal (115200).
Passe au débit MINIMAL, le plus bas possible et regarde s'il y a de l'amélioration.

Si aucune amélioration n'est percevable il faudra aller chercher ailleurs, mais au moins cette possibilité aura été évacuée.

Toujours le même problème dans la liaison série :confused:

Ca aiderait que tu écrives précisément ce que tu as fait ou pas.

Je vais supposer que tu as fait le test1 et c'est OK.
Je vais supposer que tu as fait le test2 (avec les décaleurs de niveaux logiques bidirectionnels) et ce n'est pas OK, tu ne vois rien sur le moniteur série raccordé au DUE.

Il est possible alors qu'il y ait un problème de synchronisation, car dans les sketches fournis en #2, c'est le DUE qui commence par envoyer quelque chose ("hello"), le UNO qui attend, reçoit puis renvoie, et enfin le DUE qui imprime ce qu'il a reçu du UNO sur le moniteur série.

DONC, en fonction de l'ordre dans lequel tu as chargé puis câblé en enfin démarré ces sketches, le UNO peut attendre éternellement si le DUE a démarré en premier. Pour synchroniser correctement les 2 cartes, une fois les sketches chargés et les cartes connectées (connecte les masses ensemble, alimente chaque carte séparément), tu appuies sur le bouton RESET du DUE.

ça donne quoi ?

Merci je vais essayer de séparer l'alimentation puisque jusqu'à présent j'utilisé le due pour alimenté en même temps par le vin l'uno.Mais ce que je ne comprends pas c'est que si je ne branche pas la masse avec une résistance vers le rx du due (port 3) il semble comme figé. Et si je branche le tx du uno vers le rx du due même chose il semble se figé et une fois que je l'enlevé je reçois les données qui devrait m'envoyer et puis plus de données normal vue que le câble de données n'est plus branché

je n'arrive pas à communiquer correctement avec le due même avec un pont diviseur de tension.

Le "même avec un diviseur de tension" m'interpelle.

Tout à fait au hasard : Au départ tu n'aurais pas oublié les diviseurs de tension ?

Il me semble très opportun de vérifier que chaque carte est toujours fonctionnelle.
Pour cela, par carte, boucle le RX sur le TX.
Et écrit, pour chaque carte, un tout petit programme de test qui vérifie que tu lis bien ce qui est envoyé.

Et comme dit précédemment soit plus loquace. répondre par oui ou par non à une question de plusieurs lignes est ni sérieux ni inefficace.