Read decimal number from Serial.read

assuming there is a byte to read, when you do

char setpoint = Serial.read();

you get that byte. if you type the character '7' you get the ASCII code for that character inside setpoint.
the ASCII code for '7' is 55 in decimal, so that's the value you'll have for setpoint.

if you want to go back to '7' then subtract the ascii code for '0'

char setpoint = Serial.read() - '0';

ideally you would do some range checking before doing so

if (Serial.available()) {
  char received = Serial.read();
  if ((received >= '0') && (received <= '9')) {
    setpoint = received - '0';
    ... // do some stuff here
  } else {
    // wrong input
  }
}

now if you typed 235 in the Serial monitor, then Serial.read(); is not what you want to do to get the number 235

I would suggest to study Serial Input Basics to handle this although there are (with some caveats) builtin blocking with timeout functions such as Serial.parseInt() functions that could be put to good use.