ASCII a string

Prueba esto y me dices que tal lo hace

char cadena[30]; //Creamos un array que almacenará los caracteres que escribiremos en la consola del PC. Le asignamos  un tope de caracteres, en este caso 30
byte posicion=0;  //Variable para cambiar la posición de los caracteres del array
int valor;  //Variable del valor entero

void setup() {

  Serial.begin(9600);
   
}

void loop() { 

  if (Serial.available() > 0) {
      memset(cadena, 0,sizeof(cadena));     // memset borra el contenido del array  "cadena" desde la posición 0 hasta el final sizeof
      while(Serial.available()>0) {         // Mientras haya datos en el buffer ejecuta la función
          delay(5);                         // Pone un pequeño delay para mejorar la recepción de datos
          cadena[posicion] = Serial.read();   // Lee un carácter del string "cadena" de la "posicion", luego lee el siguiente carácter con "posicion++"
          if (cadena[posicion] = '\r') {    // terminamos de 
              cadena[posicion] = 0;         // borro ese caracter \r y termino la cadena
              break;
          }
          posicion++;
      }
      Serial.print("este es = ");
      Serial.println(cadena);
  }
}