Optimisation code simple nrf24l01

Bonjour a tous,

J'ai réalisé un petit programme qui : lorsque l'on appuie sur un bouton (avec l'arduino nano), une demande est envoyée grâce à un émetteur nrf24l01 puis une information (ici état) est envoyée en retour (avec l'arduino uno) .

Le programme fonctionne mais je pense qu'on peut l'optimiser.

-Y aurait-il une autre façon de faire un "ping-pong" c'est à dire : envoyer une donnée (2) afin d'envoyer en retour une information (etat)

-De plus, savez vous pourquoi quand je ne fais pas un tableau (int donnée[]) mais j'envoie un entier (int donnée) je ne reçoit pas la bonne valeur (ici 2 ) mais 0 ?

Merci d'avance
Bonne journée
Paul

// NRF24L01
//----** ** ** * * ** *  ecran de bord (nano)


#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#define CE_PIN   7
#define CSN_PIN 8

int data[1];
int etat[1];
const uint64_t adresse[] = {0x01, 0x02};    // adresse du canal de communication

RF24 radio(CE_PIN, CSN_PIN);


const int interupteur = 3;


void setup(void)
{
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(adresse[0]);
  radio.openReadingPipe(1, adresse[1]);
  pinMode (interupteur, INPUT_PULLUP);
  radio.startListening();

}

void loop(void)
{

  if (digitalRead (interupteur) == LOW) {

    data[0] = 2;
    radio.stopListening();
    delay(100);
    radio.write( data, sizeof(data) );
    radio.startListening();
  }

  if ( radio.available() )            // si des données sont présentes
  {
    radio.read( etat, sizeof(etat) );    // lecture des données
    Serial.print("etat=");
    Serial.println(etat[0]);
  }

}
// * * * * ** *     (uno)

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#define CE_PIN   7
#define CSN_PIN 8

const uint64_t adresse[] = {0x01, 0x02};         // adresse du canal de communication

RF24 radio(CE_PIN, CSN_PIN);                               // création de l'objet radio
int data[1];
int etat_piege;


void setup()
{
  Serial.begin(9600);
  etat_piege = 0;

  radio.begin();                                     // initialisation du module NRF24L01
  radio.openReadingPipe(1, adresse[0]);             // configuration du canal de communication du module NRF24L01
  radio.openWritingPipe(adresse[1]);
  radio.startListening();
}


void loop() {

  if ( radio.available() )
  {

    radio.read( data, sizeof(data) );
    Serial.print("data=");
    Serial.println(String(data[0]));


    if (data[0] == 2) {
      int etat[1];
      etat[0]=4;
      radio.stopListening();
      delay(300);
      radio.write( etat, sizeof(etat) );
      radio.startListening();
    }
  }

}

En modifiant la fin du programme précédent j'obtiens toujours "etat=-12770" alors que je devrais avoir soit 5 ou 1

Voyez vous l'erreur ?

// * * * * ** *     (uno)

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#define CE_PIN   7
#define CSN_PIN 8

const uint64_t adresse[] = {0x01, 0x02};         // adresse du canal de communication

RF24 radio(CE_PIN, CSN_PIN);                               // création de l'objet radio
int data[1];
const int etat_pin_piege = 6;


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

  pinMode (etat_pin_piege, INPUT_PULLUP);


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


void loop() {

  if ( radio.available() )
  {

    radio.read( data, sizeof(data) );
    Serial.print("recu =");
    Serial.println(String(data[0]));


    if (data[0] == 2) {
      int etat_piege[1];
      
      if (digitalRead (etat_pin_piege) == LOW) {
        etat_piege[0] = 1;
      }
      else {
        etat_piege[0] = 5;
      }

      Serial.println(etat_piege[0]);

      radio.stopListening();
      delay(300);
      radio.write( etat_piege[0], sizeof(etat_piege[0]) );
      radio.startListening();
    }
  }

}

Merci d'avance
Bonne journée