dianas electrónicas abatibles NRF24l01

Hola, buenos días a todos.

Estoy intentando construir una diana electrónica abatible para realizar disparos a distancia y asi permitir a un tirador ver si ha dado en el blanco o no. estoy utilizando Arduino UNo y dos módulos NRF24l01 de forma que permita una comunicacional bidireccional y así poder registrar tanto los impactos mediante un contador visible en un display de 7 segmentos como las funciones que quiero que realice el mecanismo.
En el emisor quiero poner 3 botones que controlen cada una de las funciones que quiero que realice el mecanismo (función a, activa motor A produciendo el abatimiento del blanco ;función b activa el motor B , gira el blanco sobre su propio eje, exponiendo el blanco un determinado tiempo; función c, activa el motor A y lo expone durante un tiempo determinado, pasado este tiempo se abate).
los impactos serian medidos por un sensor de impacto, que podrá activarse en cualquiera de las funciones, el cual esta simulado con un botón.
Dado que mis conocimientos de arduino son bastante reducidos, he utilizado un ejemplo de comunicación bidireccional y he modificado algunos parámetros, pero no he conseguido nada de provecho, así que siempre vuelvo a empezar de cero.
el problema que tengo, es que a la hora de realizar el montaje y comprobar el circuito, el estado 1 lo realiza perfectamente, al presionar el botón 2 , realiza la misma acción que el uno y la repite de nuevo. entonces a partir de ahí no sabría ni como introducir el botón 3. ni ninguna otra función.
si alguien me pudiera orientar sobre el tema , muchas gracias por la atención y el tiempo.

emisor

#include <SPI.h>// cargado arduino botones
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9, 10); // CE, CSN
const byte addresses [][6] = {"00001", "00002"};  //Setting the two addresses. One for transmitting and one for receiving
int button_pin = 2;
int button_pin2 = 4;
int led_pin = 3;
boolean button_state = 0;
boolean button_state1 = 0;
boolean button_state2 = 0;
void setup() {
  pinMode(button_pin, INPUT);
  pinMode(button_pin2, INPUT);
  pinMode(led_pin, OUTPUT);
  radio.begin();                           //Starting the radio communication
  radio.openWritingPipe(addresses[1]);     //Setting the address at which we will send the data
  radio.openReadingPipe(1, addresses[0]);  //Setting the address at which we will receive the data
  radio.setPALevel(RF24_PA_MIN); //You can set it as minimum or maximum depending on the distance between the transmitter and receiver. 
}
void loop() 
{  
  delay(5);
  radio.stopListening();                             //This sets the module as transmitter
  button_state = digitalRead(button_pin);
  radio.write(&button_state, sizeof(button_state));  //Sending the data
  delay(5);

  radio.stopListening();                             //This sets the module as transmitter
  button_state2 = digitalRead(button_pin2);
  radio.write(&button_state2, sizeof(button_state2));  //Sending the data
  delay(5);
  
  radio.startListening();                            //This sets the module as receiver
  while(!radio.available());                         //Looking for incoming data
  radio.read(&button_state1, sizeof(button_state1)); //Reading the data
  if (button_state1 == HIGH)
  {
    digitalWrite(led_pin, HIGH);
  }
  else
  {
    digitalWrite(led_pin, LOW);
  }
}

receptor

#include <SPI.h>// cargado en arduino de los leds
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(9, 10); // CE, CSN
const byte addresses [][6] = {"00001", "00002"};    //Setting the two addresses. One for transmitting and one for receiving
int button_pin = 2;

boolean button_state = 0;
boolean button_state1 = 0;
boolean button_state2 = 0;
int led_pin = 3;

void setup() {
  pinMode(led_pin, OUTPUT);
  
  pinMode(4,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(7,OUTPUT);
  Serial.begin(9600);
  radio.begin();                            //Starting the radio communication
  radio.openWritingPipe(addresses[0]);      //Setting the address at which we will send the data
  radio.openReadingPipe(1, addresses[1]);   //Setting the address at which we will receive the data
  radio.setPALevel(RF24_PA_MIN);            //You can set it as minimum or maximum depending on the distance between the transmitter and receiver.
}
void loop() 

{
  delay(5);
  radio.startListening();                    //This sets the module as receiver
  if (radio.available())                     //Looking for incoming data
  {
    radio.read(&button_state, sizeof(button_state));
    if(button_state == HIGH)//pulsdor A botonera
  {
        digitalWrite(led_pin, HIGH);// entrada enable L293D
        digitalWrite(4, HIGH);     // Arrancamos
        digitalWrite(7, LOW);
        delay(5000);

        digitalWrite(4, LOW);      // Paramos Motor 1
        delay(5000);
        digitalWrite(7, HIGH);     // Activamos Motor1

        digitalWrite(4, LOW);      // Arrancamos con cambio de direccion
        digitalWrite(7, HIGH);
        delay(3000);
        digitalWrite(4, LOW);      // Paramos Motor 1
        delay(1000);
     
  }
  else if (button_state2==HIGH)
  {
    radio.read(&button_state2, sizeof(button_state2));
  }
    if(button_state2 == HIGH && button_state==LOW)//pulsdor B botonera
  {
     digitalWrite(5, LOW);
     delay (5000);
     digitalWrite(5, LOW);
     delay (3000);
     digitalWrite(7,HIGH);
     delay (5000);
      digitalWrite(7, LOW);
     delay (2000);
     
  }
  else
  {
     digitalWrite(led_pin, LOW);
     digitalWrite(4, LOW); 
     digitalWrite(7, LOW);;
  }
  delay(5);
  
  radio.stopListening();                           //This sets the module as transmitter
  button_state1 = digitalRead(button_pin); // boton simula el detector de impactos
  if (button_state1==HIGH){ // abatible 
        digitalWrite(led_pin, HIGH);//  entrada enable L293D
        digitalWrite(4, HIGH);     // Arrancamos
        digitalWrite(7, LOW);
        delay(5000);

        digitalWrite(4, LOW);      // Paramos Motor 1
        delay(5000);
        digitalWrite(7, HIGH);     // Activamos Motor1

        digitalWrite(4, LOW);      // Arrancamos con cambio de direccion
        digitalWrite(7, HIGH);
        delay(3000);
        digitalWrite(4, LOW);      // Paramos Motor 1
        delay(1000);
  }
   
  radio.write(&button_state1, sizeof(button_state1)); //Sending the data
  }
}

**Moderador:**Hola, bienvenido al foro Arduino.
En la sección proyectos tienes estos dos hilos que debiste haber leído antes de postear

Como tu consulta es para otra sección lo muevo a Software.
Bien posteado me refiero a los códigos.