nRF24L01 : communication bidirectionnelle

Bonjour à tous,
Je suis en train de réaliser une manette avec un nRF24L01, cependant j'aimerais que tous les 2 secondes mon bateau m'envoie la tension des batteries (donc que le récepteur devienne un émetteur et l'émetteur un récepteur)

J'ai donc 2 adresses ("00001" pour que le bateau soit en mode récepteur et "00002" pour qu'il soit en mode émetteur.

Cependant en faisant comme ceci pour le code de la manette (code ci dessous), il ne m'affiche que '0' et je n'ai pas de '2' qui apparaît (message arbitraire)
Lorsque je supprime le reste du code pour la manette et je met juste le code ci dessous sans radio.stopListening() il m'affiche '2' donc l'adresse est bonne mais je pense qui"il y a un problème d'organisation du code
Je ne vois pas comment faire ? Auriez vous une idée ?
Merci d'avance
Bonne journée

CODE pour la manette qui passe en mode récepteur quand il y a un message

const byte address[][6] = {"00001","00002"};
//.....

void setup(){
//...
radio.openWritingPipe(address[1]);
radio.openReadingPipe(0, address[0]); 

radio.stopListening();
}

void loop(){
//....
radio.startListening();
if ( radio.available()) {
  int donnees = 0;
  radio.read(&donnees, sizeof(donnees));
  Serial.print(String(donnees));
radio.stopListening();
}
}

Un nœud NRF24L01 a une seule adresse.
Le récepteur ouvre son propre pipe en lecture.
L'émetteur ouvre simplement le pipe du vis-à-vis en écriture.
Voir ici : GettingStarted_CallResponse.ino

Le bateau doit donc être en réception permanente, sauf si une information doit être envoyée à la manette.
La manette doit aussi être en réception permanente, sauf si une information doit être envoyée à au bateau.

Merci pour votre réponse, mais je ne comprend pas bien qu'est-ce que le pipe ?
Et à quoi correspond le premier 1 ?

radio.openReadingPipe(1,addresses[1]);

Ce sketch est le même pour le récepteur et l'émetteur.
Seule la variable radioNumber doit être modifiée :

bool radioNumber = 0;  // premier ARDUINO
bool radioNumber = 1;  // deuxième ARDUINO

Il fonctionne en récepteur par défaut :

role_e role = role_pong_back;                                              // The role of the current running sketch

Pour changer de rôle il suffit d'entrer T (transmitter) sur la console de l'un des deux ARDUINOS.
Mais tu peux aussi fixer le rôle en modifiant role dans le sketch :

role_e role = role_pong_back;  // premier ARDUINO
role_e role = role_ping_out;  // deuxième ARDUINO
byte addresses[][6] = {"1Node","2Node"};

  if(radioNumber){
    radio.openWritingPipe(addresses[1]);
    radio.openReadingPipe(1,addresses[0]);
  }else{
    radio.openWritingPipe(addresses[0]);
    radio.openReadingPipe(1,addresses[1]);
  }

Chaque ARDUINO a un N° (radioNumber) et ouvre son propre pipe (canal de communication) en réception et le pipe de l'autre ARDUINO en émission.
Donc:
Le premier ARDUINO ouvre le pipe 1Node en réception et le pipe 2Node en émission
Le deuxième ARDUINO ouvre le pipe 2Node en réception et le pipe 1Node en émission

Essaie le sketch.

Merci pour votre réponse mais pourquoi il faut changer comme ceci :

 if(radioNumber){
    radio.openWritingPipe(addresses[1]);
    radio.openReadingPipe(1,addresses[0]);
  }else{
    radio.openWritingPipe(addresses[0]);
    radio.openReadingPipe(1,addresses[1]);
  }

car en déclarant juste une fois dans le setup()

radio.begin();
radio.openWritingPipe(address[0]);
radio.openReadingPipe(1,address[1]);
radio.startListening();

et en mettant tout le monde en récepteur sauf quand il y a besoin d'envoyer des donnes cela fonctionne (je reçois les données et ma manette fonctionne elle aussi)

Ce n'est qu'un exemple de la librairie.

Rien ne t'empêche d'écrire deux sketches différents, c'est même conseillé.