Sentencia "if" no funciona

Hola a todos, tal y como ven en el titulo, intento usar una sentencia if pero no cumple su propósito, quisiera saber el por que. El código es usado para medir variaciones en los ángulos de giro de un módulo MPU6050, estoy intentando que los resultados solo se muestren cuando el monitor serial envie un "1", sin embargo no ocurre nada, hay algún problema en el código?.

#include "Wire.h" 
#define MPU 0x68
#define A_R 16384.0   
#define G_R 131.0      
#define RAD_A_DEG = 57.295779

int16_t AcX, AcY, AcZ, GyX, GyY, GyZ;
float Acc[2];
float Gy[3];
float Angle[3];
int mostrar=0;
String valores;
long tiempo_prev;
float dt;
 
void setup()
{
 Wire.begin();
 Wire.beginTransmission(MPU);
 Wire.write(0x6B);
 Wire.write(0);
 Wire.endTransmission(true);
 Serial.begin(115200);
}
 
void loop()
{
   Wire.beginTransmission(MPU);
   Wire.write(0x3B); 
   Wire.endTransmission(false);
   Wire.requestFrom(MPU,6,true);  
   AcX=Wire.read()<<8|Wire.read(); 
   AcY=Wire.read()<<8|Wire.read();
 
   Acc[1] = atan(-1*(AcX/A_R)/sqrt(pow((AcY/A_R),2) + pow((AcZ/A_R),2)))*RAD_TO_DEG;
   Acc[0] = atan((AcY/A_R)/sqrt(pow((AcX/A_R),2) + pow((AcZ/A_R),2)))*RAD_TO_DEG;
 
   Wire.beginTransmission(MPU);
   Wire.write(0x43);
   Wire.endTransmission(false);
   Wire.requestFrom(MPU,6,true);  
   GyX=Wire.read()<<8|Wire.read(); 
   GyY=Wire.read()<<8|Wire.read();
 
   Gy[0] = GyX/G_R;
   Gy[1] = GyY/G_R;
 
   dt = (millis() - tiempo_prev) / 1000.0;
   tiempo_prev = millis();
 
   Angle[0] = 0.98 *(Angle[0]+Gy[0]*dt) + 0.02*Acc[0];
   Angle[1] = 0.98 *(Angle[1]+Gy[1]*dt) + 0.02*Acc[1];
 
   valores = "90, " +String(Angle[0]) + "," + String(Angle[1]) + ", -90";      mostrar = Serial.read();


      mostrar = Serial.read();

   if(mostrar == 1){
   
   Serial.println(valores);
   
   }

   
}

Prueba de este modo

void loop() {
   
  leo_MPU6050();

  Gy[0] = GyX/G_R;
  Gy[1] = GyY/G_R;

  dt = (millis() - tiempo_prev) / 1000.0;
  tiempo_prev = millis();

  Angle[0] = 0.98 *(Angle[0]+Gy[0]*dt) + 0.02*Acc[0];
  Angle[1] = 0.98 *(Angle[1]+Gy[1]*dt) + 0.02*Acc[1];

  if (Serial.available() > 0) {
      mostrar = Serial.read();

      if (mostrar == 1){
          valores = "90, " +String(Angle[0]) + "," + String(Angle[1]) + ", -90"; 
          Serial.println(valores);
      }  
  }   
}

void leo_MPU6050() {
   Wire.beginTransmission(MPU);
   Wire.write(0x3B); 
   Wire.endTransmission(false);
   Wire.requestFrom(MPU,6,true);  
   AcX = Wire.read()<<8|Wire.read(); 
   AcY = Wire.read()<<8|Wire.read();
 
   Acc[1] = atan(-1*(AcX/A_R)/sqrt(pow((AcY/A_R),2) + pow((AcZ/A_R),2)))*RAD_TO_DEG;
   Acc[0] = atan((AcY/A_R)/sqrt(pow((AcX/A_R),2) + pow((AcZ/A_R),2)))*RAD_TO_DEG;
 
   Wire.beginTransmission(MPU);
   Wire.write(0x43);
   Wire.endTransmission(false);
   Wire.requestFrom(MPU,6,true);  
   GyX = Wire.read()<<8|Wire.read(); 
   GyY = Wire.read()<<8|Wire.read();
}

Supongo que el 1 que se va a mandar por el monitor serie no es un byte con el valor 1, sino que se envía un byte con el valor que representa el carácter 1 según su código ASCII. Ese valor es el 49. También se puede indicar directamente el carácter, en lugar del entero, poniendo '1' (el uno entre comillas simples).

En lugar de:

  if (mostrar == 1) {

Habría poner:

  if (mostrar == '1') {

También funcionaría poner:

  if (mostrar == 49) {