problema al recibir datos bluetooth en esp32 para pwm

Hola, estaba intentando hacer un control pwm por medio de bluetooth en el esp32 con una aplicación hecha en app inventor, el problema surge al momento de recibir los datos en la tarjeta, si selecciono solo un valor en el slider de la app que va desde 0 hasta 255 el valor llega correctamente, pero si deslizo el slider, llega una cadena de varios dígitos, he probado con los códigos que he encontrado pero el problema sigue, intente poner una condición de que si el valor actual tiene mas de 3 dígitos muestre el valor anterior pero aveces el valor que toma supera los 255 sin tener mas de 3 digitos.

#include "BluetoothSerial.h"

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif

String cadena;
//String cadena2="0";
String valor;

BluetoothSerial SerialBT;

void setup() { 
  
  Serial.begin(115200);
  SerialBT.begin("ESP32test"); //Bluetooth device name
  Serial.println("The device started, now you can pair it with bluetooth!");
    
}

void loop() {

  if(SerialBT.available()){
    cadena = String("");
    
    while(SerialBT.available()){
      cadena=cadena + char(SerialBT.read());
      delay(1);
      
   //   if(cadena.length()<4){   //si la cadena tiene mas de cuatro digitos tomar valor anterior
   //       cadena2=cadena;
   //     }
      
   //    if(cadena2.toInt()>255){  si el valor es mayor a 255 asignar 255
   //     cadena2="255";
   //     }        

         
    }  
    valor = cadena.toInt();
    //int valor2= valor.toInt();
    Serial.println(valor);
    delay(20);
  }
}

adjunto el diagrama de bloques de la aplicación y el el valor que imprime el monitor serial.

Gracias.