Communiquer entre deux arduino avec le port série

Bonjour
j’essaie de communiquer entre une carte leonardo et UNO R4 wifi via le port série. J’ai vus sur youtube une personne faisant ça avec une UNO et une Mega en utilisant les broches 0 et 1 (RX/TX).

Je n’arrive pas à le faire marcher. Pour que cela marche, j’ai du ajouter un deuxième port série sur les deux programmes et là aucun problème.

Pour l’émetteur

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
String message="";
int a=0;

void setup(){
	Serial.begin(9600);
  mySerial.begin(9600);
}
void loop(){
delay(5000);
a++;
message="num : "+String(a);
Serial.print(message);
mySerial.print(message);
}

Pour le récepteur :

 #include "Wire.h"
 #include "LiquidCrystal_I2C.h"
 LiquidCrystal_I2C LCD(0x27,20,4);
 String reception = "";
 #include <SoftwareSerial.h>
 SoftwareSerial mySerial(9, 8); // RX, TX

void setup() {
 Serial.begin(9600);
 mySerial.begin(9600);

 LCD.init(); // initialisation de l'afficheur
 LCD.backlight(); // allumer la led eclairage  
 LCD.setBacklight(1); 
 LCD.clear();//effacer ecran
 //LCD.noDisplay();
 LCD.setCursor(0, 0);
 LCD.print("Afficheur serie");
}

void loop() {
	while(true){
		if (Serial.available() > 0){
			reception = Serial.readStringUntil('\n');	
			break;// Sortie de la boucle
		}
		if (mySerial.available() > 0){
			reception = mySerial.readStringUntil('\n');	
			break;// Sortie de la boucle
		}
	}
LCD.setCursor(0, 1);
LCD.print(reception);
}

Une idée ?

Bonsoir papiarduino

Sur le UNO R4, pas besoin d'ajouter un port série, utilises les pin 0 (rx) et 1 (tx) et les commandes sont Serial1.
Sur un Mega, pas d'ajout de port série, utilises les pin 19 (rx) et 18 (tx), c'est également Serial1.
Connectes R4 0 (rx) sur Mega 18 (tx) et R4 1 (tx) sur Mega 19 (rx)

A l'émission, il faut envoyer ainsi:
mySerial.println(message); // Sur UNO 10 et 11
ou
Serial1.println(message); // Sur R4
afin d'ajouter le '\n' attendu à la réception.

Cordialement
jpbbricole

1 Like

Bonjour jpbbricole

Merci pour cette réponse rapide !

J’ai remplacé les Serial.XXX par Serial1.XXX et cela fonctionne en reliant les broches 0 et 1 entre les deux arduino (en croisant les fils bien sur). Je n’avais encore jamais vus Serial1. Ou aurais-je pu trouver cette information ? Je suis débutant en arduino et oui il doit me manquer des bases.

Cordialement
papiarduino

Dans la documentation du "langage"

https://docs.arduino.cc/language-reference/en/functions/communication/serial/

Dans la documentation de la carte

https://docs.arduino.cc/tutorials/uno-r4-wifi/cheat-sheet/#usb-serial--uart

1 Like

ça va sans dire, mais avez vous bien pensé à relier les GNDs des deux cartes aussi ?

Et si vous changiez une des deux cartes pour partir sur un ESP32 ou un MKR attention car ce sont des arduino en 3.3V donc il faudra une adaptation de tension sur la ligne Tx (5V) ➜ Rx (3.3V)

Merci pour les liens je vais les éplucher !

Oui le GND est bien relié.

Merci à vous tous pour vos réponse !

Bonne journée