libreria Mirf.h e arduino

Salve ragazzi, data la mia poca dimestichezza con la libreria Mirf.h non riesco a programmare arduino a finchè ricevuto il carattere "H" accenda un led di conseguenza, ho cercato degli esempi ma la mia ignoranza non mi rende facile gestire il dato ricevuto dal trasmettitore, questo è il codici del ricevitore:

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
int led =3;

void setup(){
  pinMode(led,OUTPUT);

   Serial.begin(9600);
    Mirf.spi = &MirfHardwareSpi;
    Mirf.csnPin = 10; //(This is optional to change the chip select pin)
    Mirf.cePin = 9; //(This is optional to change the enable pin)
    Mirf.init(); 
    Mirf.setTADDR((byte *)"serv1");
    Mirf.payload = 32;
    Mirf.config();
    Serial.println("Beginning ... "); // "Beginning ..." on sender, or "Listening ..." on sever (Receiver)
  }
  
void loop(){ 
     byte data[32]; // or int data[32];
     if(!Mirf.isSending() && Mirf.dataReady()){
          Serial.println("Got packet");
         Mirf.getData((byte *) &data);
         Serial.write(byte(data[0])); //H
         Serial.println("");}
         if (byte(data[0])== 'H')        
          {digitalWrite(led,LOW);
          delay(100);}
        
          else{digitalWrite(led,HIGH);
          delay(100);
     }
}

Non ho mai usato quella libreria (che mi pare anche un poco complicata da usare ma vabbé), però non ho capito bene, ma tu sulla seriale la vedi la "H" oppure no? Cosa leggi esattamente?

E poi questo codice:

...
         Serial.write(byte(data[0])); //H
         Serial.println("");}
         if (byte(data[0])== 'H')        
          {digitalWrite(led,LOW);
...

dato che "data[]" è già un array di byte, perché usi la funzione byte()?

...
         Serial.write(data[0]); //H
         Serial.println("");}
         if (data[0] == 'H')
...

In ogni caso ti prego, indenta bene il codice, non è una fissazione inutile, questo tuo codice anche se è di poche righe è difficile da leggere e capire ad occhio la struttura (e quindi quando fai debug può sfuggire qualcosa...). Tanto più se poi lo deve leggere qualcun altro. Usa Ctrl-T nell'IDE che te lo riformatta lui.

Otterrai una cosa del genere (l'ho riformattato io a mano..), che come vedi è ben più chiaro:

#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
int led =3;

void setup()
{
  pinMode(led,OUTPUT);
  Serial.begin(9600);
  Mirf.spi = &MirfHardwareSpi;
  Mirf.csnPin = 10; //(This is optional to change the chip select pin)
  Mirf.cePin = 9; //(This is optional to change the enable pin)
  Mirf.init(); 
  Mirf.setTADDR((byte *)"serv1");
  Mirf.payload = 32;
  Mirf.config();
  Serial.println("Beginning ... "); // "Beginning ..." on sender, or "Listening ..." on sever (Receiver)
}
  
void loop()
{ 
  byte data[32]; // or int data[32];
  if(!Mirf.isSending() && Mirf.dataReady())
  {
    Serial.println("Got packet");
    Mirf.getData((byte *) &data);
    Serial.write(byte(data[0])); //H
    Serial.println("");
  }
  if (byte(data[0])== 'H')        
  {
    digitalWrite(led,LOW);
    delay(100);
  }
  else
  {
    digitalWrite(led,HIGH);
    delay(100);
  }
}

Inoltre:
La scritta Got packet arriva?
Perché alla riga prima di quella che cita docdoc casti a puntatore a byte l'indirizzo di una variabile che di suo sarebbe già puntatore a byte?
Togli il cast e togli l'ampersand... E vediamo
Hai provato la trasmissione in precedenza?
Sei sicuro che la trasmittente vada e che sei in portata, sul canale giusto ecc ecc?