Modulo NRF24L01+

Buenos dias, estoy trabajando en un proyecto que incluye modulos NRF24L01+, tres botones en el transmisor y dos led en el receptor. Hasta ahorita funciona bien solo que tengo que mantener presionado el boton seleccionado aproximadamente 1 segundo para que se pueda enviar el codigo, por la actividad de los led en el arduino el transmisor es el que se tarda en mandar la informacion ya que una vez enviada el receptor la procesa inmediatamente, tambien lo verifique con el monitor serial. Agradeceria me orientaran para lograr evitar mantener presionado cualquier boton por buen tiempo y que solo con presionar y soltar se puedan enviar los datos.
De antemano muchas gracias por su ayuda.

El codigo del transmisor es el siguiente:

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

//RF24 library link https://github.com/maniacbug/RF24
//Pin Assingmenet http://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo

int msg[1];
RF24 radio(9, 10);    //Revisa que el pin que debe conectar el transmisor sea el mismo que marca el sketch
const uint64_t pipe = 0xE8E8F0F0E1LL;

int buttonRed = 5;
int buttonYell = 6;
int reset = 7;
int red;
int yell;
int rst;


void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openWritingPipe(pipe);
  pinMode(buttonRed, INPUT_PULLUP);
  pinMode(buttonYell, INPUT_PULLUP);
  pinMode(reset, INPUT_PULLUP);
}

void loop() {
  red = digitalRead(buttonRed);
  yell = digitalRead(buttonYell);
  rst = digitalRead(reset);
/*********************Rojo**************************/
  if (red == LOW)
  {
    msg[0] = 1;
    radio.write(msg, 1);
    Serial.println(msg[0]);
  }
/*******************Amarillo************************/
  if (yell == LOW)
  {
    msg[0] = 2;
    radio.write(msg, 1);
    Serial.println(msg[0]);
  }
/***********************Reset***********************/
  if(rst == LOW)
  {
    msg[0] = 3;
    radio.write(msg, 1);
    Serial.println(msg[0]);
  }
}

Y el codigo del receptor es este:

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

int msg[1];
RF24 radio(9,10);         // Revisar los numeros de los pines en la libreria RF24 github que sean los correctos del arduino que se va a usar, estos cambian segun el modelo a usar

const uint64_t pipe = 0xE8E8F0F0E1LL;
int ledred_01 = 5;
int ledyell_01 = 6;
int buzzer = 4;

void setup() {
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(1, pipe);
  radio.startListening();
  pinMode(ledred_01, OUTPUT);
  pinMode(ledyell_01, OUTPUT);
  pinMode(buzzer, OUTPUT);

}

void loop() {
  if(radio.available())
   {
      int done = radio.read(msg, 1);
      if(msg[0] == 1)
      {
        Serial.println(msg[0]);
        digitalWrite(ledred_01, HIGH);
        digitalWrite(ledyell_01, LOW);
        digitalWrite(buzzer, HIGH);
      }
      if(msg[0] == 2)
      {
        Serial.println(msg[0]);
        digitalWrite(ledyell_01, HIGH);
        digitalWrite(ledred_01, LOW);
        digitalWrite(buzzer, HIGH);
      }
      if(msg[0] == 3)
      {
        Serial.println(msg[0]);
        digitalWrite(ledred_01, LOW);
        digitalWrite(ledyell_01, LOW);
        digitalWrite(buzzer, LOW);
      }
    }
}

Se hacer lo que quieres pero usando primero la evolución de esa librería que es tmrsh20 y luego la librería Network o Mesh que maneja perfectamente la comunicación maestro esclavos.

Quieres te oriento, mira esta Documentacion de RF24Network Trmh20

De acá la descargas Donwload RF24Network
Creo que requieres RF24 del mismo autor.

Los ejemplos
helloworld_rx.ino
helloworld_tx.ino
son muy claros uno para recibir y el otro para enviar.
Claro que debes combinarlos para tener algo en los dos sentidos.

la ventaja de todo esto es que usas estructuras para contener todo lo que necesites enviar/recibir
En los ejemplos la estructura es

struct payload_t {                 // Structure of our payload
  unsigned long ms;
  unsigned long counter;
};

aunque tiene dos variables contenidas ms y counter puedes modificarla a gusto para enviar TUS INFORMACION.