Hola.
Más o menos entiendo lo que haces.
Tu ingresas un número por el teclado, digamos 1234.
En este ingreso cada número es un byte en un arreglo {'1','2','3','4',0}.
Este arreglo lo conviertes a un número de tipo long (long a pesar que solo necesitas un byte), o sea es ahora 1234 (mil doscientos treinta y cuatro)
Si ese número es mayor a 256, lo dejas en 256, o sea 1234 es ahora 256. (Creo que debería ser de 0 a 255, no de 0 a 256);
Este valor lo pones en un PWM.
Me parece que el PWM es de 8 bits, o sea que varia el ancho de pulso de 0 a 255, si le escribes 256, es igual a ingresarle 1.
¿Si estoy correcto en mi análisis, qué está mal o que no te funciona?