Pasar valor recibido por UDP a variable local para interpretar y encender un led

Que tal, estoy trabajando con el protocolo UDP y tengo mis codigos para el maestro y el esclavo en donde ya puedo enviar y recibir los datos. Mi problema es como puedo meter o pasar los valores recibidos en el buffer por UDP a una variable local para poder interpretarlos y poder encender un LED. Por ejemplo: Enviar un 1 desde el maestro al esclavo y que este valor lo interprete el modulo ESP8266 y haga la acción, he realizado varias pruebas y no puedo hacer que el valor del buffer se le asigne a una variable. Dejo el código del esclavo por si alguien puede ayudarme.

#include <ESP8266WiFi.h>
#include <WiFiUdp.h>

const char *ssid = "circuits4you";
const char *pass = "password"; 

unsigned int localPort = 2000; // local port to listen for UDP packets

IPAddress ServerIP(192,168,4,1);
IPAddress ClientIP(192,168,4,2);

// A UDP instance to let us send and receive packets over UDP
WiFiUDP udp;

char packetBuffer[9];   //Where we get the UDP data
//======================================================================
//                Setup
//======================================================================
void setup()
{
    Serial.begin(9600);
    Serial.println();

    WiFi.begin(ssid, pass);   //Connect to access point
  
    Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
    
    //Start UDP
    Serial.println("Starting UDP");
    udp.begin(localPort);
    Serial.print("Local port: ");
    Serial.println(udp.localPort());
}
//======================================================================
//                MAIN LOOP
//======================================================================
void loop()
{
    int cb = udp.parsePacket();
    if (!cb) 
    {
      //If serial data is recived send it to UDP
      if(Serial.available()>0)
        {
        udp.beginPacket(ServerIP, 2000);  //Send Data to Master unit
        //Send UDP requests are to port 2000
        
        char a[1];
        a[0]=char(Serial.read()); //Serial Byte Read
        udp.write(a,1); //Send one byte to ESP8266 
        udp.endPacket();
        }
    }
    else {
      // We've received a UDP packet, send it to serial
      udp.read(packetBuffer, 1); // read the packet into the buffer, we are reading only one byte
      Serial.print(packetBuffer);
      int valor = 0;
      if (packetBuffer[0] == '1')
      { valor = 1;
        if (valor == '1')
        {
        Serial.print(valor);
       }
      }
      delay(20);
    }
}
//=======================================================================

Y que pasa con esto?

// We've received a UDP packet, send it to serial
      udp.read(packetBuffer, 1); // read the packet into the buffer, we are reading only one byte
      Serial.print(packetBuffer);
      int valor = 0;
      if (packetBuffer[0] == '1')
      { valor = 1;
        if (valor == '1')
        {
        Serial.print(valor);
       }
      }

Ahi esta recibiendo datos del master
espera 1 byte que guarda en packetBuffer que puede tener un tamaño de 9 bytes máximo 0 a 8

udp.read(packetBuffer,1);

Lo muestra

Serial.print(packetBuffer);

y luego

if (packetBuffer[0] == '1')

como recibe un char entonces tu podrias hacer lo que gustes con eso.

lo quierse como entero entonces lo transformas

valor = packetBuffer[0]-'0';

pondrá un 0 cuando se envia '0'
pondrá un 1 cuando se envia '1'

pondra un 9 cuando se envia '9'

sirve para mas?
primero tu esperas 1 byte asi que si enviaras mas bytes sería otra cuestion, convertirlos.

Se entiende?

Que tal, gracias por la respuesta. Si, entiendo la explicación, solo que al momento de correr el código así como esta, no entra al loop del IF de la variable valor, solo me sigue imprimiendo los valores del packetBuffer

y que envias? el if espera un '1'

A ver yo te di una solución posible

valor = packetBuffer[0]-'0';

imprime valor