Problema trasmissione nRF24l01

Buongiorno,
da un po di tempo ho realizzato dei circuiti con l'nRF24L01 e arduino mini per poter comandare a distanza il colore di un led rgb posto su ognuno di essi.
C'è una trasmittente che riceve dei messaggi dal seriale nel formato "Indirizzo R G B" e li riinvia tramite l'nrf, e da un po di ricevitori che quanto leggono il proprio indirizzo accendono il led del colore richiesto, tutto molto semplice.

Il codice funziona, tuttavia ogni tanto qualche ricevente si blocca sull'ultimo colore ricevuto e l'unico modo per farla tornare a lavorare è schiacciare il tasto reset.

A cosa può essere dovuto questo comportamento? Come si potrebbe risolvere? Avete consigli per modifiche/migliorie per ottimizzare ulteriormente il codice?

Vi ringrazio anticipatamente per la disponibilità e vi copio di seguito i codici

MASTER:

#include <SPI.h>
#include <RF24.h>
#include <nRF24L01.h>

int inByte;
int i; 
RF24 radio(9, 10);
const uint64_t pipe = 0xE8E8F0F0E1LL;
int wait = 150;

byte col[4];

void setup(){  
  Serial.begin(115200); 
  radio.begin();
  radio.openWritingPipe(pipe);
  radio.setChannel(111);
  radio.setAutoAck(false);  
  radio.enableDynamicPayloads();
//  radio.setDataRate(RF24_250KBPS);
  radio.setPALevel(RF24_PA_MAX);
//  radio.disableCRC();
}

void loop()
{
  if (Serial.available()) {

    Serial.readBytes(col, 4);
    
    if(col[0] >= 1){
      radio.startWrite(&col, sizeof(col));        
    }   
  } 
}

SLAVE:

/*
 * col[0] -> indirizzo
 * col[1] -> red
 * col[2] -> green
 * col[3] -> blue
 */

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9, 10);

const uint64_t pipe = 0xE8E8F0F0E1LL;
int redPin =   6;
int greenPin = 5;
int bluePin =  3;
int dipPins[] = {8, 7, 4, 2, 0, 1, A2, A3 }; //DIP Switch Pins
byte pixel;
byte col[4];
byte ch[] = {1,11,21,31,41,51,61,71,81,
             2,12,22,32,42,52,62,72,82,
             3,13,23,33,43,53,63,73,83,
             4,14,24,34,44,54,64,74,84,
             5,15,25,35,45,55,65,75,85,
             6,16,26,36,46,56,66,76,86,
             7,17,27,37,47,57,67,77,87,
             8,18,28,38,48,58,68,78,88,
             9,19,29,39,49,59,69,79,89};

void setup(void)
{
  radio.begin();
  radio.setChannel(111);
  radio.setAutoAck(false);
  radio.enableDynamicPayloads();
  radio.setPALevel(RF24_PA_LOW);
  radio.openReadingPipe(1, pipe);

  pinMode(redPin,   OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin,  OUTPUT);
  analogWrite(redPin,   0);
  analogWrite(greenPin, 0);
  analogWrite(bluePin,  0);

  int i;
  for(i = 0; i<=7; i++){
    pinMode(dipPins[i], INPUT_PULLUP);
  }
  delay(100);
  pixel = address()-1;
  
  radio.startListening();
}

void loop(void)
{
  if(radio.available()){
    bool done = false;
    while (!done) {
      
      done = radio.read(&col, sizeof(col));

      if(col[0] == ch[pixel]){ 
        analogWrite(redPin,   col[1]);
        analogWrite(greenPin, col[2]);
        analogWrite(bluePin,  col[3]); 
      }
    }   
  }
}

//Create Address from DIP Switch (8 positions used)
byte address(){
 int i,j;
 
 //Get the switches state
 for(i=7; i>=0; i--){
 j = (j << 1) | digitalRead(dipPins[i]);   // read the input pin
 }
   
 return ~j; //return address
}

Buona sera e benvenuto sul forum,
essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili

Chiedo umilmente perdono, ho provveduto subito :wink:

Nessuno riesce a darmi una mano? :smiley:

Può essere che questo problema si presenti a causa della quantità di dati ricevuti che vanno quindi a "intasare" l'nrf?
Vengono inviati 100 pacchetti da 4 byte per 30 volte al secondo, tuttavia il problema non si presenta solo raramente e senza apparente logica, quindi mi sembra strano che sia questa la causa.

Scusate se riuppo la discussione, ma a mesi di distanza non ho ancora trovato una soluzione