Serial.read() lee mal los datos

Buenas tardes. Estoy haciendo una prueba para un proyecto, y al leer los datos por Serial, me los devuelve mal.
Es decir, introduzco el numero "20" y me devuelve -1.
Este es el código:

  Serial.println("Escribir ahora");
  id = Serial.read();
  delay(5000);
  Serial.println("ID correcta");
  Serial.println(id);
  delay(5000);
  Serial.println("Escribir ahora!!");
  viajes = Serial.read();
  delay(2000);
  Serial.println("Viajes correctos");
  Serial.print(viajes);
  delay(1000);

Y cuando pongo, por ejemplo, en la ID la entrada por serial, 23, me devuelve -1.
Alguna idea?

Este es el código:

Uy, si ese es tu codigo, claro que no funciona, no tienes declaradas la variables, no tienes void setup(), ni void loop().

Primero eso no puede ser tu código completo.
Asi que lee las normas del foro porque ellas te piden que siempre presentes toda la información posible.
De otro modo pierdes tu tiempo y el nuestro como ahora.

Veamos... una lectura del puerto serie no se hace como has hecho tu, por que?
Porque del modo que tu lo haces SUPONES que siempre hay datos disponibles y la cosa no es asi.

Ve a documentación => indice de temas tutoriales => y puedes ver en Serie o clases de youtube o libros como se maneja el puerto serie.