nRF24L01+ mauvais signal

Bonjour,

J’utilise 2 cartes Arduino uno et 2 modules nRF24L01+ pour transmettre les signaux d’une colonne lumineuse d’une machine à une autre colonne lumineuse dans une pièce à coté.

Les colonnes possède 3 lumières (vert, jaune et rouge), donc 3 signaux booléen à transmettre.

Mon système fonctionne mais au bouts de quelque heures les signaux déconne, la lampe vert et allumé au lieu d’être éteinte et pareil pour la rouge, étrangement la jaune fonctionne.

En pressant le bouton reset sur la carde Arduino de l’émetteur, rien ce passe.
Par contre si je coupe et remet la tension de la carte de l’émetteur, ça remarche un moment.

Voici le code de l’émetteur

//déclaration des variables
#include <SPI.h>      // Pour la communication via le port SPI
#include <Mirf.h>     // Pour la gestion de la communication
#include <nRF24L01.h> // Pour les définitions des registres du nRF24L01
#include <MirfHardwareSpiDriver.h> // Pour la communication SPI
int pinLampeVert, pinLampeJaune, pinLampeRouge;
boolean etatAllumageVert, etatAllumageJaune, etatAllumageRouge;

void setup()
{
  //initialisation des variables
  Serial.begin(9600);
  Mirf.cePin = 9; // Broche CE sur D9
  Mirf.csnPin = 10; // Broche CSN sur D10
  Mirf.spi = &MirfHardwareSpi; // On veut utiliser le port SPI hardware
  Mirf.init(); // Initialise la bibliothéque

  Mirf.channel = 1; // Choix du cannal de communication (128 canaux disponible, de 0 à 127)
  Mirf.payload = sizeof(int) * 6; // Taille d'un message (maximum 32 octets)
  Mirf.config(); // Sauvegarde la configuration dans le module radio
  Mirf.configRegister(RF_SETUP, 0x26);

  Mirf.setTADDR((byte *) "nrf02"); // Adresse de transmission
  Mirf.setRADDR((byte *) "nrf01"); // Adresse de réception
   
  pinLampeVert = 2;
  pinLampeJaune = 3;
  pinLampeRouge = 4;
  etatAllumageVert = 0;
  etatAllumageJaune = 0;
  etatAllumageRouge = 0;
  //définition des modes
  pinMode(pinLampeVert, INPUT_PULLUP);
  pinMode(pinLampeJaune, INPUT_PULLUP);
  pinMode(pinLampeRouge, INPUT_PULLUP);
  Serial.println("Go !"); 
}
void loop()
{
  boolean etatAllumageVert = digitalRead(pinLampeVert);
  boolean etatAllumageJaune = digitalRead(pinLampeJaune);
  boolean etatAllumageRouge = digitalRead(pinLampeRouge);
  int valeurs[6];
  valeurs[0] = etatAllumageVert;
  valeurs[1] = etatAllumageJaune;
  valeurs[2] = etatAllumageRouge;
  Serial.println("##########");
  Serial.println("Vert");
  Serial.print(valeurs[0]);
  Serial.println("");
  Serial.println("Jaune");
  Serial.print(valeurs[1]);
  Serial.println("");
  Serial.println("Rouge");
  Serial.print(valeurs[2]);
  Serial.println("");
  Serial.println("##########");
  Serial.println("");
  Serial.println("");
  Serial.println("");
  Mirf.send((byte *) &valeurs); // On envoi le message
  while(Mirf.isSending()); // On attend la fin de l'envoi
}

Code du récepteur

#include <SPI.h>      // Pour la communication via le port SPI
#include <Mirf.h>     // Pour la gestion de la communication
#include <nRF24L01.h> // Pour les définitions des registres du nRF24L01
#include <MirfHardwareSpiDriver.h> // Pour la communication SPI
boolean etatAllumageVert, etatAllumageJaune, etatAllumageRouge;

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

  Mirf.cePin = 9; // Broche CE sur D9
  Mirf.csnPin = 10; // Broche CSN sur D10
  Mirf.spi = &MirfHardwareSpi; // On veut utiliser le port SPI hardware
  Mirf.init(); // Initialise la bibliothéque

  Mirf.channel = 1; // Choix du cannal de communication (128 canaux disponible, de 0 à 127)
  Mirf.payload = sizeof(int) * 6; // Taille d'un message (maximum 32 octets)
  Mirf.config(); // Sauvegarde la configuration dans le module radio
  Mirf.configRegister(RF_SETUP, 0x26);

  Mirf.setTADDR((byte *) "nrf01"); // Adresse de transmission
  Mirf.setRADDR((byte *) "nrf02"); // Adresse de réception

  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  
  etatAllumageVert = 1;
  etatAllumageJaune = 1;
  etatAllumageRouge = 1;
  
  Serial.println("GO");

}
void loop()
{
    int valeurs[6];
  if(Mirf.dataReady())
  {
    Mirf.getData((byte *) &valeurs); // Réception du paquet
  //lecture de l'état du bouton et stockage dans etatBouton
  etatAllumageRouge = valeurs[0];
  etatAllumageJaune = valeurs[1];
  etatAllumageVert = valeurs[2];
  }
  {
  Serial.println("##########");
  Serial.println("Vert");
  Serial.print(etatAllumageVert);
  Serial.println("");
  Serial.println("Jaune");
  Serial.print(etatAllumageJaune);
  Serial.println("");
  Serial.println("Rouge");
  Serial.print(etatAllumageRouge);
  Serial.println("");
  Serial.println("##########");
  Serial.println("");
  Serial.println("");
  Serial.println("");
    if (etatAllumageRouge == 0)
    digitalWrite (2, HIGH);
    else
    digitalWrite (2, LOW);
    
        if (etatAllumageJaune == 0)
    digitalWrite (3, HIGH);
    else
    digitalWrite (3, LOW);
    
       if (etatAllumageVert == 0)
    digitalWrite (4, HIGH);
    else
    digitalWrite (4, LOW);
  }

}

Je suis bloqué et ne trouve pas de solution, avez vous une idée ?